{
  "id": "fc6cd2204ed219f5c3351a5bf0466ff7",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.4",
  "solcLongVersion": "0.8.4+commit.c7e474f2",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/LiquiditeamNft.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.4;\n\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155.sol';\nimport '@openzeppelin/contracts/access/AccessControl.sol';\nimport '@openzeppelin/contracts/security/Pausable.sol';\nimport '@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol';\nimport '@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol';\nimport '@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol';\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\n\ncontract LiquiditeamNft is ERC1155, AccessControl, Pausable, ERC1155Burnable, ERC1155Supply, EIP712 {\n  bytes32 public constant URI_SETTER_ROLE = keccak256('URI_SETTER_ROLE');\n  bytes32 public constant CONTRACT_URI_SETTER_ROLE = keccak256('CONTRACT_URI_SETTER_ROLE');\n  bytes32 public constant PAUSER_ROLE = keccak256('PAUSER_ROLE');\n  bytes32 public constant MINTER_ROLE = keccak256('MINTER_ROLE');\n  bytes32 public constant TRANSFERRER_ROLE = keccak256('TRANSFERRER_ROLE');\n\n  string private _contractURI;\n\n  mapping(uint256 => string) private _uris;\n  mapping(uint256 => bool) private _usedPassIds;\n\n  event TransferWithTransferPass(uint256 passId, address account, uint256 id, uint256 amount);\n\n  constructor(address transferrer, string memory newContractURI) ERC1155('') EIP712('LiquiditeamNftTransferPass', '1') {\n    _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n    _grantRole(URI_SETTER_ROLE, msg.sender);\n    _grantRole(CONTRACT_URI_SETTER_ROLE, msg.sender);\n    _grantRole(PAUSER_ROLE, msg.sender);\n    _grantRole(MINTER_ROLE, msg.sender);\n    _grantRole(TRANSFERRER_ROLE, transferrer);\n\n    setContractURI(newContractURI);\n  }\n\n  function uri(uint256 id) public view virtual override returns (string memory) {\n    return _uris[id];\n  }\n\n  // obsolete\n  function setURI(string memory newURI) public onlyRole(URI_SETTER_ROLE) {\n    _setURI(newURI);\n  }\n\n  function contractURI() public view returns (string memory) {\n    return _contractURI;\n  }\n\n  function setContractURI(string memory newURI) public onlyRole(CONTRACT_URI_SETTER_ROLE) {\n    _contractURI = newURI;\n  }\n\n  function pause() public onlyRole(PAUSER_ROLE) {\n    _pause();\n  }\n\n  function unpause() public onlyRole(PAUSER_ROLE) {\n    _unpause();\n  }\n\n  function mint(\n    address account,\n    uint256 id,\n    uint256 amount,\n    bytes memory data\n  ) public onlyRole(MINTER_ROLE) {\n    _mint(account, id, amount, data);\n  }\n\n  function mintBatch(\n    address to,\n    uint256[] memory ids,\n    uint256[] memory amounts,\n    bytes memory data\n  ) public onlyRole(MINTER_ROLE) {\n    _mintBatch(to, ids, amounts, data);\n  }\n\n  function transferWithTransferPass(\n    bytes memory signature,\n    uint256 passId,\n    address account,\n    uint256 id,\n    uint256 amount,\n    uint256 validUntil,\n    string memory newUri\n  ) public {\n    bytes32 digest = _hashTypedDataV4(\n      keccak256(\n        abi.encode(\n          keccak256(\n            'TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)'\n          ),\n          passId,\n          account,\n          id,\n          amount,\n          validUntil,\n          keccak256(bytes(newUri))\n        )\n      )\n    );\n    address recoveredSigner = ECDSA.recover(digest, signature);\n    require(hasRole(TRANSFERRER_ROLE, recoveredSigner), 'Only the transferrer sign transfer pass');\n    require(block.timestamp < validUntil, 'Transfer pass is expired');\n    require(!_usedPassIds[passId], 'Transfer pass was already used');\n\n    // no need to check if account == sender, because account is verified and token will be sent to account\n\n    bytes memory uriBytes = bytes(_uris[id]);\n    if (uriBytes.length == 0) {\n      _uris[id] = newUri;\n    }\n\n    emit TransferWithTransferPass(passId, account, id, amount);\n\n    _usedPassIds[passId] = true;\n\n    _mint(account, id, amount, '');\n  }\n\n  function _beforeTokenTransfer(\n    address operator,\n    address from,\n    address to,\n    uint256[] memory ids,\n    uint256[] memory amounts,\n    bytes memory data\n  ) internal override(ERC1155, ERC1155Supply) whenNotPaused {\n    super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n  }\n\n  // The following functions are overrides required by Solidity.\n\n  function supportsInterface(bytes4 interfaceId) public view override(ERC1155, AccessControl) returns (bool) {\n    return super.supportsInterface(interfaceId);\n  }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/ERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"./extensions/IERC1155MetadataURI.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n    using Address for address;\n\n    // Mapping from token ID to account balances\n    mapping(uint256 => mapping(address => uint256)) private _balances;\n\n    // Mapping from account to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n    string private _uri;\n\n    /**\n     * @dev See {_setURI}.\n     */\n    constructor(string memory uri_) {\n        _setURI(uri_);\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC1155).interfaceId ||\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC1155MetadataURI-uri}.\n     *\n     * This implementation returns the same URI for *all* token types. It relies\n     * on the token type ID substitution mechanism\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n     *\n     * Clients calling this function must replace the `\\{id\\}` substring with the\n     * actual token type ID.\n     */\n    function uri(uint256) public view virtual override returns (string memory) {\n        return _uri;\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n        require(account != address(0), \"ERC1155: address zero is not a valid owner\");\n        return _balances[id][account];\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOfBatch}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory)\n    {\n        require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n        uint256[] memory batchBalances = new uint256[](accounts.length);\n\n        for (uint256 i = 0; i < accounts.length; ++i) {\n            batchBalances[i] = balanceOf(accounts[i], ids[i]);\n        }\n\n        return batchBalances;\n    }\n\n    /**\n     * @dev See {IERC1155-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC1155-isApprovedForAll}.\n     */\n    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[account][operator];\n    }\n\n    /**\n     * @dev See {IERC1155-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) public virtual override {\n        require(\n            from == _msgSender() || isApprovedForAll(from, _msgSender()),\n            \"ERC1155: caller is not token owner nor approved\"\n        );\n        _safeTransferFrom(from, to, id, amount, data);\n    }\n\n    /**\n     * @dev See {IERC1155-safeBatchTransferFrom}.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) public virtual override {\n        require(\n            from == _msgSender() || isApprovedForAll(from, _msgSender()),\n            \"ERC1155: caller is not token owner nor approved\"\n        );\n        _safeBatchTransferFrom(from, to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function _safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n        address operator = _msgSender();\n        uint256[] memory ids = _asSingletonArray(id);\n        uint256[] memory amounts = _asSingletonArray(amount);\n\n        _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n        uint256 fromBalance = _balances[id][from];\n        require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n        unchecked {\n            _balances[id][from] = fromBalance - amount;\n        }\n        _balances[id][to] += amount;\n\n        emit TransferSingle(operator, from, to, id, amount);\n\n        _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n     *\n     * Emits a {TransferBatch} event.\n     *\n     * Requirements:\n     *\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function _safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual {\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n        for (uint256 i = 0; i < ids.length; ++i) {\n            uint256 id = ids[i];\n            uint256 amount = amounts[i];\n\n            uint256 fromBalance = _balances[id][from];\n            require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n            unchecked {\n                _balances[id][from] = fromBalance - amount;\n            }\n            _balances[id][to] += amount;\n        }\n\n        emit TransferBatch(operator, from, to, ids, amounts);\n\n        _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Sets a new URI for all token types, by relying on the token type ID\n     * substitution mechanism\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n     *\n     * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n     * URI or any of the amounts in the JSON file at said URI will be replaced by\n     * clients with the token type ID.\n     *\n     * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n     * interpreted by clients as\n     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n     * for token type ID 0x4cce0.\n     *\n     * See {uri}.\n     *\n     * Because these URIs cannot be meaningfully represented by the {URI} event,\n     * this function emits no events.\n     */\n    function _setURI(string memory newuri) internal virtual {\n        _uri = newuri;\n    }\n\n    /**\n     * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function _mint(\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n\n        address operator = _msgSender();\n        uint256[] memory ids = _asSingletonArray(id);\n        uint256[] memory amounts = _asSingletonArray(amount);\n\n        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n        _balances[id][to] += amount;\n        emit TransferSingle(operator, address(0), to, id, amount);\n\n        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n     *\n     * Emits a {TransferBatch} event.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function _mintBatch(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n        for (uint256 i = 0; i < ids.length; i++) {\n            _balances[ids[i]][to] += amounts[i];\n        }\n\n        emit TransferBatch(operator, address(0), to, ids, amounts);\n\n        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens of token type `id` from `from`\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `from` must have at least `amount` tokens of token type `id`.\n     */\n    function _burn(\n        address from,\n        uint256 id,\n        uint256 amount\n    ) internal virtual {\n        require(from != address(0), \"ERC1155: burn from the zero address\");\n\n        address operator = _msgSender();\n        uint256[] memory ids = _asSingletonArray(id);\n        uint256[] memory amounts = _asSingletonArray(amount);\n\n        _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n        uint256 fromBalance = _balances[id][from];\n        require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n        unchecked {\n            _balances[id][from] = fromBalance - amount;\n        }\n\n        emit TransferSingle(operator, from, address(0), id, amount);\n\n        _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n     *\n     * Emits a {TransferBatch} event.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     */\n    function _burnBatch(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory amounts\n    ) internal virtual {\n        require(from != address(0), \"ERC1155: burn from the zero address\");\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n        for (uint256 i = 0; i < ids.length; i++) {\n            uint256 id = ids[i];\n            uint256 amount = amounts[i];\n\n            uint256 fromBalance = _balances[id][from];\n            require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n            unchecked {\n                _balances[id][from] = fromBalance - amount;\n            }\n        }\n\n        emit TransferBatch(operator, from, address(0), ids, amounts);\n\n        _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\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, \"ERC1155: setting approval status for self\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning, as well as batched variants.\n     *\n     * The same hook is called on both single and batched variants. For single\n     * transfers, the length of the `ids` and `amounts` arrays will be 1.\n     *\n     * Calling conditions (for each `id` and `amount` pair):\n     *\n     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * of token type `id` will be  transferred to `to`.\n     * - When `from` is zero, `amount` tokens of token type `id` will be minted\n     * for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n     * will be burned.\n     * - `from` and `to` are never both zero.\n     * - `ids` and `amounts` have the same, non-zero length.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any token transfer. This includes minting\n     * and burning, as well as batched variants.\n     *\n     * The same hook is called on both single and batched variants. For single\n     * transfers, the length of the `id` and `amount` arrays will be 1.\n     *\n     * Calling conditions (for each `id` and `amount` pair):\n     *\n     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * of token type `id` will be  transferred to `to`.\n     * - When `from` is zero, `amount` tokens of token type `id` will be minted\n     * for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n     * will be burned.\n     * - `from` and `to` are never both zero.\n     * - `ids` and `amounts` have the same, non-zero length.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual {}\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    ) private {\n        if (to.isContract()) {\n            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n                if (response != IERC1155Receiver.onERC1155Received.selector) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n\n    function _doSafeBatchTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) private {\n        if (to.isContract()) {\n            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n                bytes4 response\n            ) {\n                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n\n    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n        uint256[] memory array = new uint256[](1);\n        array[0] = element;\n\n        return array;\n    }\n}\n"
      },
      "@openzeppelin/contracts/access/AccessControl.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IAccessControl.sol\";\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n    struct RoleData {\n        mapping(address => bool) members;\n        bytes32 adminRole;\n    }\n\n    mapping(bytes32 => RoleData) private _roles;\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with a standardized message including the required role.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n     *\n     * _Available since v4.1._\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n        return _roles[role].members[account];\n    }\n\n    /**\n     * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n     * Overriding this function changes the behavior of the {onlyRole} modifier.\n     *\n     * Format of the revert message is described in {_checkRole}.\n     *\n     * _Available since v4.6._\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Revert with a standard message if `account` is missing `role`.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert(\n                string(\n                    abi.encodePacked(\n                        \"AccessControl: account \",\n                        Strings.toHexString(uint160(account), 20),\n                        \" is missing role \",\n                        Strings.toHexString(uint256(role), 32)\n                    )\n                )\n            );\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n        return _roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address account) public virtual override {\n        require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event. Note that unlike {grantRole}, this function doesn't perform any\n     * checks on the calling account.\n     *\n     * May emit a {RoleGranted} event.\n     *\n     * [WARNING]\n     * ====\n     * This function should only be called from the constructor when setting\n     * up the initial roles for the system.\n     *\n     * Using this function in any other way is effectively circumventing the admin\n     * system imposed by {AccessControl}.\n     * ====\n     *\n     * NOTE: This function is deprecated in favor of {_grantRole}.\n     */\n    function _setupRole(bytes32 role, address account) internal virtual {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        _roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual {\n        if (!hasRole(role, account)) {\n            _roles[role].members[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n        }\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual {\n        if (hasRole(role, account)) {\n            _roles[role].members[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/security/Pausable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    bool private _paused;\n\n    /**\n     * @dev Initializes the contract in unpaused state.\n     */\n    constructor() {\n        _paused = false;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        return _paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        require(!paused(), \"Pausable: paused\");\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        require(paused(), \"Pausable: not paused\");\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        _paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        _paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/extensions/ERC1155Burnable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1155.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows token holders to destroy both their\n * own tokens and those that they have been approved to use.\n *\n * _Available since v3.1._\n */\nabstract contract ERC1155Burnable is ERC1155 {\n    function burn(\n        address account,\n        uint256 id,\n        uint256 value\n    ) public virtual {\n        require(\n            account == _msgSender() || isApprovedForAll(account, _msgSender()),\n            \"ERC1155: caller is not token owner nor approved\"\n        );\n\n        _burn(account, id, value);\n    }\n\n    function burnBatch(\n        address account,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual {\n        require(\n            account == _msgSender() || isApprovedForAll(account, _msgSender()),\n            \"ERC1155: caller is not token owner nor approved\"\n        );\n\n        _burnBatch(account, ids, values);\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1155.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155Supply is ERC1155 {\n    mapping(uint256 => uint256) private _totalSupply;\n\n    /**\n     * @dev Total amount of tokens in with a given id.\n     */\n    function totalSupply(uint256 id) public view virtual returns (uint256) {\n        return _totalSupply[id];\n    }\n\n    /**\n     * @dev Indicates whether any token exist with a given id, or not.\n     */\n    function exists(uint256 id) public view virtual returns (bool) {\n        return ERC1155Supply.totalSupply(id) > 0;\n    }\n\n    /**\n     * @dev See {ERC1155-_beforeTokenTransfer}.\n     */\n    function _beforeTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    ) internal virtual override {\n        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n        if (from == address(0)) {\n            for (uint256 i = 0; i < ids.length; ++i) {\n                _totalSupply[ids[i]] += amounts[i];\n            }\n        }\n\n        if (to == address(0)) {\n            for (uint256 i = 0; i < ids.length; ++i) {\n                uint256 id = ids[i];\n                uint256 amount = amounts[i];\n                uint256 supply = _totalSupply[id];\n                require(supply >= amount, \"ERC1155: burn amount exceeds totalSupply\");\n                unchecked {\n                    _totalSupply[id] = supply - amount;\n                }\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n    /* solhint-disable var-name-mixedcase */\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n    // invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n    uint256 private immutable _CACHED_CHAIN_ID;\n    address private immutable _CACHED_THIS;\n\n    bytes32 private immutable _HASHED_NAME;\n    bytes32 private immutable _HASHED_VERSION;\n    bytes32 private immutable _TYPE_HASH;\n\n    /* solhint-enable var-name-mixedcase */\n\n    /**\n     * @dev Initializes the domain separator and parameter caches.\n     *\n     * The meaning of `name` and `version` is specified in\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n     *\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n     * - `version`: the current major version of the signing domain.\n     *\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n     * contract upgrade].\n     */\n    constructor(string memory name, string memory version) {\n        bytes32 hashedName = keccak256(bytes(name));\n        bytes32 hashedVersion = keccak256(bytes(version));\n        bytes32 typeHash = keccak256(\n            \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n        );\n        _HASHED_NAME = hashedName;\n        _HASHED_VERSION = hashedVersion;\n        _CACHED_CHAIN_ID = block.chainid;\n        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n        _CACHED_THIS = address(this);\n        _TYPE_HASH = typeHash;\n    }\n\n    /**\n     * @dev Returns the domain separator for the current chain.\n     */\n    function _domainSeparatorV4() internal view returns (bytes32) {\n        if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {\n            return _CACHED_DOMAIN_SEPARATOR;\n        } else {\n            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n        }\n    }\n\n    function _buildDomainSeparator(\n        bytes32 typeHash,\n        bytes32 nameHash,\n        bytes32 versionHash\n    ) private view returns (bytes32) {\n        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n    }\n\n    /**\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n     * function returns the hash of the fully encoded EIP712 message for this domain.\n     *\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n     *\n     * ```solidity\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     *     keccak256(\"Mail(address to,string contents)\"),\n     *     mailTo,\n     *     keccak256(bytes(mailContents))\n     * )));\n     * address signer = ECDSA.recover(digest, signature);\n     * ```\n     */\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\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"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n    /**\n     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n     */\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n    /**\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n     * transfers.\n     */\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] values\n    );\n\n    /**\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n     * `approved`.\n     */\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n    /**\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n     *\n     * If an {URI} event was emitted for `id`, the standard\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n     * returned by {IERC1155MetadataURI-uri}.\n     */\n    event URI(string value, uint256 indexed id);\n\n    /**\n     * @dev Returns the amount of tokens of token type `id` owned by `account`.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function balanceOf(address account, uint256 id) external view returns (uint256);\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n        external\n        view\n        returns (uint256[] memory);\n\n    /**\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n     *\n     * Emits an {ApprovalForAll} event.\n     *\n     * Requirements:\n     *\n     * - `operator` cannot be the caller.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n     *\n     * See {setApprovalForAll}.\n     */\n    function isApprovedForAll(address account, address operator) external view returns (bool);\n\n    /**\n     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n     * - `from` must have a balance of tokens of type `id` of at least `amount`.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n     *\n     * Emits a {TransferBatch} event.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata amounts,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n    /**\n     * @dev Handles the receipt of a single ERC1155 token type. This function is\n     * called at the end of a `safeTransferFrom` after the balance has been updated.\n     *\n     * NOTE: To accept the transfer, this must return\n     * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     * (i.e. 0xf23a6e61, or its own function selector).\n     *\n     * @param operator The address which initiated the transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param id The ID of the token being transferred\n     * @param value The amount of tokens being transferred\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n     */\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n\n    /**\n     * @dev Handles the receipt of a multiple ERC1155 token types. This function\n     * is called at the end of a `safeBatchTransferFrom` after the balances have\n     * been updated.\n     *\n     * NOTE: To accept the transfer(s), this must return\n     * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     * (i.e. 0xbc197c81, or its own function selector).\n     *\n     * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n     * @param from The address which previously owned the token\n     * @param ids An array containing ids of each token being transferred (order and length must match values array)\n     * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n     * @param data Additional data with no specified format\n     * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n     */\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n    /**\n     * @dev Returns the URI for token type `id`.\n     *\n     * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n     * clients with the actual token type ID.\n     */\n    function uri(uint256 id) external view returns (string memory);\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/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/utils/introspection/ERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.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 ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.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 IERC165 {\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/access/IAccessControl.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     *\n     * _Available since v3.1._\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call, an admin role\n     * bearer except when using {AccessControl-_setupRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     */\n    function renounceRole(bytes32 role, address account) external;\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"
      },
      "contracts/LiquiditeamNftV2.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.4;\n\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155.sol';\nimport '@openzeppelin/contracts/access/AccessControl.sol';\nimport '@openzeppelin/contracts/security/Pausable.sol';\nimport '@openzeppelin/contracts/token/common/ERC2981.sol';\nimport '@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol';\nimport '@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol';\nimport '@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol';\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\n\ncontract LiquiditeamNftV2 is ERC1155, ERC2981, AccessControl, Pausable, ERC1155Burnable, ERC1155Supply, EIP712 {\n  bytes32 public constant URI_SETTER_ROLE = keccak256('URI_SETTER_ROLE');\n  bytes32 public constant CONTRACT_URI_SETTER_ROLE = keccak256('CONTRACT_URI_SETTER_ROLE');\n  bytes32 public constant PAUSER_ROLE = keccak256('PAUSER_ROLE');\n  bytes32 public constant MINTER_ROLE = keccak256('MINTER_ROLE');\n  bytes32 public constant ROYALTY_ROLE = keccak256('ROYALTY_ROLE');\n  bytes32 public constant TRANSFERRER_ROLE = keccak256('TRANSFERRER_ROLE');\n\n  string private _contractURI;\n\n  mapping(uint256 => string) private _uris;\n  mapping(uint256 => bool) private _usedPassIds;\n\n  event TransferWithTransferPass(uint256 passId, address account, uint256 id, uint256 amount);\n\n  constructor(\n    address transferrer,\n    string memory newContractURI,\n    address royaltyReceiver,\n    uint96 royaltyFeeNumerator\n  ) ERC1155('') EIP712('LiquiditeamNftTransferPass', '1') {\n    _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n    _grantRole(URI_SETTER_ROLE, msg.sender);\n    _grantRole(CONTRACT_URI_SETTER_ROLE, msg.sender);\n    _grantRole(PAUSER_ROLE, msg.sender);\n    _grantRole(MINTER_ROLE, msg.sender);\n    _grantRole(ROYALTY_ROLE, msg.sender);\n    _grantRole(TRANSFERRER_ROLE, transferrer);\n\n    if (royaltyReceiver != address(0) && royaltyFeeNumerator > 0) {\n      _setDefaultRoyalty(royaltyReceiver, royaltyFeeNumerator);\n    }\n\n    setContractURI(newContractURI);\n  }\n\n  function uri(uint256 id) public view virtual override returns (string memory) {\n    return _uris[id];\n  }\n\n  // obsolete\n  function setURI(string memory newURI) public onlyRole(URI_SETTER_ROLE) {\n    _setURI(newURI);\n  }\n\n  function contractURI() public view returns (string memory) {\n    return _contractURI;\n  }\n\n  function setContractURI(string memory newURI) public onlyRole(CONTRACT_URI_SETTER_ROLE) {\n    _contractURI = newURI;\n  }\n\n  function pause() public onlyRole(PAUSER_ROLE) {\n    _pause();\n  }\n\n  function unpause() public onlyRole(PAUSER_ROLE) {\n    _unpause();\n  }\n\n  function mint(address account, uint256 id, uint256 amount, bytes memory data) public onlyRole(MINTER_ROLE) {\n    _mint(account, id, amount, data);\n  }\n\n  function mintBatch(\n    address to,\n    uint256[] memory ids,\n    uint256[] memory amounts,\n    bytes memory data\n  ) public onlyRole(MINTER_ROLE) {\n    _mintBatch(to, ids, amounts, data);\n  }\n\n  function setDefaultRoyalty(address receiver, uint96 feeNumerator) public onlyRole(ROYALTY_ROLE) {\n    _setDefaultRoyalty(receiver, feeNumerator);\n  }\n\n  function deleteDefaultRoyalty() public onlyRole(ROYALTY_ROLE) {\n    _deleteDefaultRoyalty();\n  }\n\n  function setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) public onlyRole(ROYALTY_ROLE) {\n    _setTokenRoyalty(tokenId, receiver, feeNumerator);\n  }\n\n  function resetTokenRoyalty(uint256 tokenId) public onlyRole(ROYALTY_ROLE) {\n    _resetTokenRoyalty(tokenId);\n  }\n\n  function transferWithTransferPass(\n    bytes memory signature,\n    uint256 passId,\n    address account,\n    uint256 id,\n    uint256 amount,\n    uint256 validUntil,\n    string memory newUri\n  ) public {\n    bytes32 digest = _hashTypedDataV4(\n      keccak256(\n        abi.encode(\n          keccak256(\n            'TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)'\n          ),\n          passId,\n          account,\n          id,\n          amount,\n          validUntil,\n          keccak256(bytes(newUri))\n        )\n      )\n    );\n    address recoveredSigner = ECDSA.recover(digest, signature);\n    require(hasRole(TRANSFERRER_ROLE, recoveredSigner), 'Only the transferrer sign transfer pass');\n    require(block.timestamp < validUntil, 'Transfer pass is expired');\n    require(!_usedPassIds[passId], 'Transfer pass was already used');\n\n    // no need to check if account == sender, because account is verified and token will be sent to account\n\n    bytes memory uriBytes = bytes(_uris[id]);\n    if (uriBytes.length == 0) {\n      _uris[id] = newUri;\n      emit URI(newUri, id);\n    }\n\n    emit TransferWithTransferPass(passId, account, id, amount);\n\n    _usedPassIds[passId] = true;\n\n    _mint(account, id, amount, '');\n  }\n\n  function _beforeTokenTransfer(\n    address operator,\n    address from,\n    address to,\n    uint256[] memory ids,\n    uint256[] memory amounts,\n    bytes memory data\n  ) internal override(ERC1155, ERC1155Supply) whenNotPaused {\n    super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n  }\n\n  // The following functions are overrides required by Solidity.\n\n  function supportsInterface(bytes4 interfaceId) public view override(ERC1155, ERC2981, AccessControl) returns (bool) {\n    return super.supportsInterface(interfaceId);\n  }\n}\n"
      },
      "@openzeppelin/contracts/token/common/ERC2981.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/IERC2981.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.\n *\n * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for\n * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.\n *\n * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the\n * fee is specified in basis points by default.\n *\n * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See\n * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to\n * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.\n *\n * _Available since v4.5._\n */\nabstract contract ERC2981 is IERC2981, ERC165 {\n    struct RoyaltyInfo {\n        address receiver;\n        uint96 royaltyFraction;\n    }\n\n    RoyaltyInfo private _defaultRoyaltyInfo;\n    mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo;\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {\n        return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @inheritdoc IERC2981\n     */\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) {\n        RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId];\n\n        if (royalty.receiver == address(0)) {\n            royalty = _defaultRoyaltyInfo;\n        }\n\n        uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator();\n\n        return (royalty.receiver, royaltyAmount);\n    }\n\n    /**\n     * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a\n     * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an\n     * override.\n     */\n    function _feeDenominator() internal pure virtual returns (uint96) {\n        return 10000;\n    }\n\n    /**\n     * @dev Sets the royalty information that all ids in this contract will default to.\n     *\n     * Requirements:\n     *\n     * - `receiver` cannot be the zero address.\n     * - `feeNumerator` cannot be greater than the fee denominator.\n     */\n    function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual {\n        require(feeNumerator <= _feeDenominator(), \"ERC2981: royalty fee will exceed salePrice\");\n        require(receiver != address(0), \"ERC2981: invalid receiver\");\n\n        _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator);\n    }\n\n    /**\n     * @dev Removes default royalty information.\n     */\n    function _deleteDefaultRoyalty() internal virtual {\n        delete _defaultRoyaltyInfo;\n    }\n\n    /**\n     * @dev Sets the royalty information for a specific token id, overriding the global default.\n     *\n     * Requirements:\n     *\n     * - `receiver` cannot be the zero address.\n     * - `feeNumerator` cannot be greater than the fee denominator.\n     */\n    function _setTokenRoyalty(\n        uint256 tokenId,\n        address receiver,\n        uint96 feeNumerator\n    ) internal virtual {\n        require(feeNumerator <= _feeDenominator(), \"ERC2981: royalty fee will exceed salePrice\");\n        require(receiver != address(0), \"ERC2981: Invalid parameters\");\n\n        _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator);\n    }\n\n    /**\n     * @dev Resets royalty information for the token id back to the global default.\n     */\n    function _resetTokenRoyalty(uint256 tokenId) internal virtual {\n        delete _tokenRoyaltyInfo[tokenId];\n    }\n}\n"
      },
      "@openzeppelin/contracts/interfaces/IERC2981.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/IERC165.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 IERC2981 is IERC165 {\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"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 1000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin/contracts/access/AccessControl.sol": {
        "AccessControl": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "previousAdminRole",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "newAdminRole",
                  "type": "bytes32"
                }
              ],
              "name": "RoleAdminChanged",
              "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": "DEFAULT_ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "name": "getRoleAdmin",
              "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": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "renounceRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "DEFAULT_ADMIN_ROLE()": "a217fddf",
              "getRoleAdmin(bytes32)": "248a9ca3",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "renounceRole(bytes32,address)": "36568abe",
              "revokeRole(bytes32,address)": "d547741f",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"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\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x5b35d8e68aeaccc685239bd9dd79b9ba01a0357930f8a3307ab85511733d9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba8eb2d22f9321bd4660f6617c181d9611ff30a9b089408b8c6e2216d6d5cdc5\",\"dweb:/ipfs/QmTSJvhjHfnUV1j4hsqDv8PmLvGBLRs9gHLjTUXrUJ5Y9q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/access/IAccessControl.sol": {
        "IAccessControl": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "previousAdminRole",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "newAdminRole",
                  "type": "bytes32"
                }
              ],
              "name": "RoleAdminChanged",
              "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": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "name": "getRoleAdmin",
              "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": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "renounceRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getRoleAdmin(bytes32)": "248a9ca3",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "renounceRole(bytes32,address)": "36568abe",
              "revokeRole(bytes32,address)": "d547741f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/interfaces/IERC2981.sol": {
        "IERC2981": {
          "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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/interfaces/IERC2981.sol\":\"IERC2981\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xa812eed728198acd2c30d06950a5bea8d68436e4f694dd892273266ec2f79f5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5522afc5c222c810d9ad67c45f37cb7169452fcf76692cad10ac8153c068daa\",\"dweb:/ipfs/QmX4XgnDp7pyvojQ6g5tacrUMCf7TED2qC2vERH9Xh9feZ\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/security/Pausable.sol": {
        "Pausable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "paused()": "5c975abb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract in unpaused state.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/security/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004\",\"dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": {
        "ERC1155": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "uri_",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1670:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "105:1046:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "115:12:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "125:2:20",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "119:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "172:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "181:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "189:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "174:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "174:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "174:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "147:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "156:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "143:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "143:23:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "168:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "139:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "139:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "136:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "207:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "227:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "221:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "221:16:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "211:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "246:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "264:2:20",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "268:1:20",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "260:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "260:10:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "272:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "256:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "256:18:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "250:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "301:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "310:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "318:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "303:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "303:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "303:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "289:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "297:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "286:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "286:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "283:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "336:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "361:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "340:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "416:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "425:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "433:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "418:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "418:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "418:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "395:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "399:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "391:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "391:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "406:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "387:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "387:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "380:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "380:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "377:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "451:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "467:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "461:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "461:9:20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "455:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "493:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "495:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "495:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "495:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "485:2:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "489:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "482:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "482:10:20"
                              },
                              "nodeType": "YulIf",
                              "src": "479:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "524:17:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "538:2:20",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "534:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "534:7:20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "528:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "550:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "570:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "564:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "554:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "582:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "604:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_4",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "628:2:20"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "632:4:20",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "624:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "624:13:20"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "639:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "620:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "620:22:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "644:2:20",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "616:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "616:31:20"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "649:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "612:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "612:40:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "600:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "600:53:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "586:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "712:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "714:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "714:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "714:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:10:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "683:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "668:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "668:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "691:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "688:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "688:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "665:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "665:46:20"
                              },
                              "nodeType": "YulIf",
                              "src": "662:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "750:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "754:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "743:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "743:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "743:22:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "781:6:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "789:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "774:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "774:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "838:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "847:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "855:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "840:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "840:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "840:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "815:2:20"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "819:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "811:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "811:11:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "824:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "807:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "807:20:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "829:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "804:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "804:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "801:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "873:15:20",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "882:6:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "877:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "943:83:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "972:6:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "980:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "968:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "968:14:20"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "984:2:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "964:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "964:23:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1003:2:20"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1007:1:20"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "999:3:20"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "999:10:20"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1011:2:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "995:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "995:19:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "989:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "989:26:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "957:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "957:59:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "957:59:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:1:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "911:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "905:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "905:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "915:19:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "917:15:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "926:1:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "929:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "922:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "922:10:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "917:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "901:3:20",
                                "statements": []
                              },
                              "src": "897:129:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1056:64:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1085:6:20"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1093:2:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1081:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1081:15:20"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "1098:2:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1077:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1077:24:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1103:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1070:40:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1070:40:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1041:1:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1044:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1038:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1038:9:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1035:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1129:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1139:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1129:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "71:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "82:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "94:6:20",
                            "type": ""
                          }
                        ],
                        "src": "14:1137:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1211:325:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1221:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1235:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1238:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1231:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1231:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1221:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1252:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1282:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1288:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1278:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1278:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "1256:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1329:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1331:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1345:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1353:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1341:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1341:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1331:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1309:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1302:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1302:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1299:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1419:111:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1440:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1447:3:20",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1452:10:20",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1443:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1443:20:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1433:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1433:31:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1433:31:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1484:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1487:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1477:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1477:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1477:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1512:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1515:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1505:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1505:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1375:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1398:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1372:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1372:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1369:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1191:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1200:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1156:380:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1573:95:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1590:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1597:3:20",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1602:10:20",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1593:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1593:20:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1583:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1583:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1583:31:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1630:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1633:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1623:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1623:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1654:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1657:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1647:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1647:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1541:127:20"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(value0, value0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        if gt(i, _4)\n        {\n            mstore(add(add(memPtr, _4), _1), value0)\n        }\n        value0 := memPtr\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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620017cc380380620017cc833981016040819052620000349162000105565b6200003f8162000046565b506200022e565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001db565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b6000602080838503121562000118578182fd5b82516001600160401b03808211156200012f578384fd5b818501915085601f83011262000143578384fd5b81518181111562000158576200015862000218565b604051601f8201601f19908116603f0116810190838211818310171562000183576200018362000218565b8160405282815288868487010111156200019b578687fd5b8693505b82841015620001be57848401860151818501870152928501926200019f565b82841115620001cf57868684830101525b98975050505050505050565b600181811c90821680620001f057607f821691505b602082108114156200021257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61158e806200023e6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a3660046110ed565b61018c565b6040519081526020015b60405180910390f35b6100c56100c03660046111e1565b610235565b60405190151581526020016100a9565b6100e86100e3366004611220565b6102d2565b6040516100a9919061139f565b610108610103366004610faa565b610366565b005b61011d610118366004611116565b610408565b6040516100a9919061135e565b6101086101383660046110b3565b61057e565b6100c561014b366004610f78565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611050565b61058d565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000148061029857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806102cc57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600280546102e1906113ee565b80601f016020809104026020016040519081016040528092919081815260200182805461030d906113ee565b801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103825750610382853361014b565b6103f45760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f76656400000000000000000000000000000000006064820152608401610206565b6104018585858585610628565b5050505050565b606081518351146104815760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff8111156104ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156104d4578160200160208202803683370190505b50905060005b84518110156105765761053b85828151811061050657634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061052e57634e487b7160e01b600052603260045260246000fd5b602002602001015161018c565b82828151811061055b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015261056f81611456565b90506104da565b509392505050565b6105893383836108b7565b5050565b6001600160a01b0385163314806105a957506105a9853361014b565b61061b5760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f76656400000000000000000000000000000000006064820152608401610206565b61040185858585856109ac565b815183511461069f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166107035760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561084957600085828151811061073257634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061075e57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107f15760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061082e9084906113d6565b925050819055505050508061084290611456565b9050610707565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610899929190611371565b60405180910390a46108af818787878787610b57565b505050505050565b816001600160a01b0316836001600160a01b0316141561093f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610a105760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b336000610a1c85610d15565b90506000610a2985610d15565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610aaf5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610aec9084906113d6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610b4c848a8a8a8a8a610d6e565b505050505050505050565b6001600160a01b0384163b156108af5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610b9b90899089908890889088906004016112bd565b602060405180830381600087803b158015610bb557600080fd5b505af1925050508015610be5575060408051601f3d908101601f19168201909252610be291810190611204565b60015b610c9b57610bf161149d565b806308c379a01415610c2b5750610c066114b5565b80610c115750610c2d565b8060405162461bcd60e51b8152600401610206919061139f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d5d57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156108af5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610db2908990899088908890889060040161131b565b602060405180830381600087803b158015610dcc57600080fd5b505af1925050508015610dfc575060408051601f3d908101601f19168201909252610df991810190611204565b60015b610e0857610bf161149d565b6001600160e01b0319811663f23a6e6160e01b14610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610e9057600080fd5b919050565b600082601f830112610ea5578081fd5b81356020610eb2826113b2565b604051610ebf8282611429565b8381528281019150858301600585901b87018401881015610ede578586fd5b855b85811015610efc57813584529284019290840190600101610ee0565b5090979650505050505050565b600082601f830112610f19578081fd5b813567ffffffffffffffff811115610f3357610f33611487565b604051610f4a601f8301601f191660200182611429565b818152846020838601011115610f5e578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610f8a578182fd5b610f9383610e79565b9150610fa160208401610e79565b90509250929050565b600080600080600060a08688031215610fc1578081fd5b610fca86610e79565b9450610fd860208701610e79565b9350604086013567ffffffffffffffff80821115610ff4578283fd5b61100089838a01610e95565b94506060880135915080821115611015578283fd5b61102189838a01610e95565b93506080880135915080821115611036578283fd5b5061104388828901610f09565b9150509295509295909350565b600080600080600060a08688031215611067578081fd5b61107086610e79565b945061107e60208701610e79565b93506040860135925060608601359150608086013567ffffffffffffffff8111156110a7578182fd5b61104388828901610f09565b600080604083850312156110c5578182fd5b6110ce83610e79565b9150602083013580151581146110e2578182fd5b809150509250929050565b600080604083850312156110ff578182fd5b61110883610e79565b946020939093013593505050565b60008060408385031215611128578182fd5b823567ffffffffffffffff8082111561113f578384fd5b818501915085601f830112611152578384fd5b8135602061115f826113b2565b60405161116c8282611429565b8381528281019150858301600585901b870184018b101561118b578889fd5b8896505b848710156111b4576111a081610e79565b83526001969096019591830191830161118f565b50965050860135925050808211156111ca578283fd5b506111d785828601610e95565b9150509250929050565b6000602082840312156111f2578081fd5b81356111fd8161153f565b9392505050565b600060208284031215611215578081fd5b81516111fd8161153f565b600060208284031215611231578081fd5b5035919050565b6000815180845260208085019450808401835b838110156112675781518752958201959082019060010161124b565b509495945050505050565b60008151808452815b818110156112975760208185018101518683018201520161127b565b818111156112a85782602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526112e960a0830186611238565b82810360608401526112fb8186611238565b9050828103608084015261130f8185611272565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261135360a0830184611272565b979650505050505050565b6020815260006111fd6020830184611238565b6040815260006113846040830185611238565b82810360208401526113968185611238565b95945050505050565b6020815260006111fd6020830184611272565b600067ffffffffffffffff8211156113cc576113cc611487565b5060051b60200190565b600082198211156113e9576113e9611471565b500190565b600181811c9082168061140257607f821691505b6020821081141561142357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561144f5761144f611487565b6040525050565b600060001982141561146a5761146a611471565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156114b257600481823e5160e01c5b90565b600060443d10156114c35790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114f357505050505090565b828501915081518181111561150b5750505050505090565b843d87010160208285010111156115255750505050505090565b61153460208286010187611429565b509095945050505050565b6001600160e01b03198116811461155557600080fd5b5056fea2646970667358221220101d0484e5725584bea369855012adfc4ba5740124df7e649512b517ba4787a064736f6c63430008040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17CC CODESIZE SUB DUP1 PUSH3 0x17CC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x105 JUMP JUMPDEST PUSH3 0x3F DUP2 PUSH3 0x46 JUMP JUMPDEST POP PUSH3 0x22E JUMP JUMPDEST DUP1 MLOAD PUSH3 0x5B SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x5F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x6D SWAP1 PUSH3 0x1DB JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x91 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xDC JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xAC JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xDC JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xDC JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xDC JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xBF JUMP JUMPDEST POP PUSH3 0xEA SWAP3 SWAP2 POP PUSH3 0xEE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xEA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x118 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x12F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x143 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x158 JUMPI PUSH3 0x158 PUSH3 0x218 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 PUSH3 0x183 JUMPI PUSH3 0x183 PUSH3 0x218 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x19B JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x1BE JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x19F JUMP JUMPDEST DUP3 DUP5 GT ISZERO PUSH3 0x1CF JUMPI DUP7 DUP7 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1F0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x212 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 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x158E DUP1 PUSH3 0x23E 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 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0x10ED JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x235 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0x366 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x1116 JUMP JUMPDEST PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x135E JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B3 JUMP JUMPDEST PUSH2 0x57E JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xF78 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x298 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2CC JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2E1 SWAP1 PUSH2 0x13EE 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 0x30D SWAP1 PUSH2 0x13EE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x35A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x35A 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 0x33D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x382 JUMPI POP PUSH2 0x382 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x3F4 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206E6F7220617070726F7665640000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x401 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x628 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x481 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4AB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4D4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x576 JUMPI PUSH2 0x53B DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x506 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x52E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x55B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x56F DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP1 POP PUSH2 0x4DA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x589 CALLER DUP4 DUP4 PUSH2 0x8B7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x5A9 JUMPI POP PUSH2 0x5A9 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x61B 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206E6F7220617070726F7665640000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x401 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9AC JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x69F 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x703 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x732 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x82E SWAP1 DUP5 SWAP1 PUSH2 0x13D6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x842 SWAP1 PUSH2 0x1456 JUMP JUMPDEST SWAP1 POP PUSH2 0x707 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x899 SWAP3 SWAP2 SWAP1 PUSH2 0x1371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x8AF DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB57 JUMP JUMPDEST POP POP POP 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 EQ ISZERO PUSH2 0x93F 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA10 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xA1C DUP6 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA29 DUP6 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xAEC SWAP1 DUP5 SWAP1 PUSH2 0x13D6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xB4C DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD6E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xB9B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBE5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBE2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC9B JUMPI PUSH2 0xBF1 PUSH2 0x149D JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0xC2B JUMPI POP PUSH2 0xC06 PUSH2 0x14B5 JUMP JUMPDEST DUP1 PUSH2 0xC11 JUMPI POP PUSH2 0xC2D JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0x139F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xD0C 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD5D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xDB2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x131B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xDFC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xDF9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xE08 JUMPI PUSH2 0xBF1 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xD0C 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xEB2 DUP3 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEBF DUP3 DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xEDE JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xEE0 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF19 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF33 JUMPI PUSH2 0xF33 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF4A PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xF5E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF8A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xF93 DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP2 POP PUSH2 0xFA1 PUSH1 0x20 DUP5 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFC1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xFCA DUP7 PUSH2 0xE79 JUMP JUMPDEST SWAP5 POP PUSH2 0xFD8 PUSH1 0x20 DUP8 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1000 DUP10 DUP4 DUP11 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1015 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1021 DUP10 DUP4 DUP11 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1036 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1043 DUP9 DUP3 DUP10 ADD PUSH2 0xF09 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1067 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1070 DUP7 PUSH2 0xE79 JUMP JUMPDEST SWAP5 POP PUSH2 0x107E PUSH1 0x20 DUP8 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1043 DUP9 DUP3 DUP10 ADD PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10C5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10CE DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x10E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1108 DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x113F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1152 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x115F DUP3 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116C DUP3 DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x118B JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x11B4 JUMPI PUSH2 0x11A0 DUP2 PUSH2 0xE79 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x118F JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x11CA JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x11D7 DUP6 DUP3 DUP7 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x11FD DUP2 PUSH2 0x153F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1215 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11FD DUP2 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1231 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1267 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x124B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x127B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x12A8 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x12E9 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1238 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x12FB DUP2 DUP7 PUSH2 0x1238 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x130F DUP2 DUP6 PUSH2 0x1272 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1272 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x11FD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1238 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1384 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1238 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1396 DUP2 DUP6 PUSH2 0x1238 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x11FD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x1487 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x13E9 JUMPI PUSH2 0x13E9 PUSH2 0x1471 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1402 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1423 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144F JUMPI PUSH2 0x144F PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x146A JUMPI PUSH2 0x146A PUSH2 0x1471 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x14B2 JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x14C3 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x14F3 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x150B JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1525 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1534 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x1429 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SAR DIV DUP5 0xE5 PUSH19 0x5584BEA369855012ADFC4BA5740124DF7E6495 SLT 0xB5 OR 0xBA SELFBALANCE DUP8 LOG0 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "570:16691:4:-:0;;;1107:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1149:13;1157:4;1149:7;:13::i;:::-;1107:62;570:16691;;8173:86;8239:13;;;;:4;;:13;;;;;:::i;:::-;;8173:86;:::o;570:16691::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;570:16691:4;;;-1:-1:-1;570:16691:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:1137:20;94:6;125:2;168;156:9;147:7;143:23;139:32;136:2;;;189:6;181;174:22;136:2;221:16;;-1:-1:-1;;;;;286:14:20;;;283:2;;;318:6;310;303:22;283:2;361:6;350:9;346:22;336:32;;406:7;399:4;395:2;391:13;387:27;377:2;;433:6;425;418:22;377:2;467;461:9;489:2;485;482:10;479:2;;;495:18;;:::i;:::-;570:2;564:9;538:2;624:13;;-1:-1:-1;;620:22:20;;;644:2;616:31;612:40;600:53;;;668:18;;;688:22;;;665:46;662:2;;;714:18;;:::i;:::-;754:10;750:2;743:22;789:2;781:6;774:18;829:7;824:2;819;815;811:11;807:20;804:33;801:2;;;855:6;847;840:22;801:2;882:6;873:15;;897:129;911:2;908:1;905:9;897:129;;;999:10;;;995:19;;989:26;968:14;;;964:23;;957:59;922:10;;;;897:129;;;1044:2;1041:1;1038:9;1035:2;;;1103:6;1098:2;1093;1085:6;1081:15;1077:24;1070:40;1035:2;1139:6;105:1046;-1:-1:-1;;;;;;;;105:1046:20:o;1156:380::-;1235:1;1231:12;;;;1278;;;1299:2;;1353:4;1345:6;1341:17;1331:27;;1299:2;1406;1398:6;1395:14;1375:18;1372:38;1369:2;;;1452:10;1447:3;1443:20;1440:1;1433:31;1487:4;1484:1;1477:15;1515:4;1512:1;1505:15;1369:2;;1211:325;;;:::o;1541:127::-;1602:10;1597:3;1593:20;1590:1;1583:31;1633:4;1630:1;1623:15;1657:4;1654:1;1647:15;1573:95;570:16691:4;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:16322:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:20",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:20"
                              },
                              "nodeType": "YulIf",
                              "src": "111:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:20",
                            "type": ""
                          }
                        ],
                        "src": "14:196:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "279:691:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "328:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "337:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "344:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "330:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "330:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "307:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "315:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "303:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "303:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "322:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "299:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "299:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "292:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "292:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "289:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "361:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "384:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "371:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "371:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "365:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "410:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "404:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "423:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "473:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "433:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "427:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "485:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "505:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "499:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "499:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "489:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "537:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "517:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "517:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "557:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "568:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "561:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "590:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "598:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "583:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "583:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "610:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "621:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "610:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "641:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "656:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "664:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "652:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "652:15:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "645:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "721:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "730:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "737:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "723:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "723:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "723:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "690:6:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "702:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "705:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "698:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "698:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "686:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "686:23:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "711:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "682:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "682:32:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "716:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "676:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "754:14:20",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "763:5:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "758:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "822:118:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "843:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "861:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "848:12:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "848:17:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "836:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "836:30:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "836:30:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "879:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "895:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "886:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "911:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "922:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "927:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "918:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "911:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "788:1:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "791:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "785:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "785:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "795:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "797:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "809:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "802:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "802:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "797:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "781:3:20",
                                "statements": []
                              },
                              "src": "777:163:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "949:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "958:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "253:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "261:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "269:5:20",
                            "type": ""
                          }
                        ],
                        "src": "215:755:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1027:523:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1076:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1085:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1092:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1078:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1078:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1078:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1055:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1063:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1051:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1051:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1047:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1047:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1040:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1037:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1109:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1132:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1119:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1119:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1113:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1178:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1180:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1180:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1180:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1154:2:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1158:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1151:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1151:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1148:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1209:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1229:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1223:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1223:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1213:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1261:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1281:2:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1285:4:20",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1277:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1277:13:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1296:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1292:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1292:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1273:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1273:27:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1302:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1269:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1269:38:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "1241:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1241:67:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1241:67:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1324:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1317:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1383:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1392:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1399:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1385:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1385:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1358:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1366:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1354:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1354:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1371:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1350:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1350:26:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1378:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1347:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1344:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1433:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1441:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1429:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1429:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1452:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1460:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1448:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1448:17:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1467:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1416:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1416:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1416:54:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1494:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1502:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1490:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1490:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1507:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1486:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1486:26:20"
                                  },
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1514:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1479:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1479:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1479:41:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1529:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1538:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1001:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1009:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1017:5:20",
                            "type": ""
                          }
                        ],
                        "src": "975:575:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1642:183:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1688:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1697:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1705:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1690:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1690:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1690:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1663:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1672:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1659:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1659:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1684:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1655:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1655:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1652:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1723:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1752:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1733:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1733:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1723:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1771:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1804:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1815:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1800:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1800:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1781:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1781:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1771:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1600:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1611:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1623:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1631:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1555:270:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2027:786:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2074:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2083:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2091:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2076:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2076:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2076:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2057:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2044:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2044:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2069:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2040:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2040:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2037:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2109:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2138:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2119:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2119:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2109:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2157:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2190:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2201:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2186:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2186:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2167:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2167:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2157:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2214:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2245:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2256:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2241:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2241:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2218:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2269:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2279:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2273:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2324:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2333:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2341:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2326:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2326:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2326:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2312:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2320:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2309:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2306:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2359:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2402:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2413:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2398:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2398:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2422:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2369:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2369:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2359:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2439:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2472:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2483:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2468:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2468:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2455:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2455:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2443:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2516:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2525:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2533:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2518:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2518:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2518:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2502:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2512:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2499:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2499:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2496:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2551:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2605:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2590:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2590:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2616:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2561:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2561:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2551:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2633:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2666:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2677:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2662:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2662:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2649:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2649:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2637:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2711:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2720:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2728:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2713:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2713:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2713:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2697:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2707:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2694:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2694:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2691:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2746:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2777:9:20"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2788:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2773:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2773:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2799:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2746:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1961:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1972:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1984:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1992:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2000:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2008:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2016:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1830:983:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2965:479:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3012:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3021:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3029:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3014:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3014:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3014:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2986:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2995:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2982:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2982:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3007:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2978:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2978:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2975:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3047:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3076:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3057:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3057:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3047:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3095:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3139:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3124:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3124:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3105:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3105:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3095:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3152:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3179:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3190:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3175:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3175:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3203:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3230:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3241:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3226:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3226:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3213:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3213:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3254:47:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3285:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3296:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3281:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3281:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3268:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3268:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3258:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3344:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3353:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3361:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3346:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3346:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3346:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3316:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3324:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3313:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3313:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3310:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3379:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3421:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3406:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3406:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3430:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3389:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3389:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3379:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2899:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2910:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2922:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2930:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2938:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2946:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2954:6:20",
                            "type": ""
                          }
                        ],
                        "src": "2818:626:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3533:283:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3579:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3588:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3596:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3581:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3581:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3581:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3554:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3563:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3550:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3550:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3575:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3546:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3546:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3543:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3614:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3643:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3624:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3624:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3614:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3662:45:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3692:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3703:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3688:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3688:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3675:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3675:32:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3666:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3760:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3769:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3777:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3762:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3762:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3762:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3729:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3750:5:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3743:6:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3743:13:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3736:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3736:21:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3726:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3726:32:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3719:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3719:40:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3716:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3795:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3805:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3795:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3491:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3502:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3514:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3522:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3449:367:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3908:177:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3954:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3963:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3971:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3956:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3956:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3956:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3929:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3938:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3925:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3925:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3950:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3921:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3921:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3918:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3989:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4018:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3999:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3999:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3989:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4037:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4064:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4075:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4060:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4060:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4047:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4047:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4037:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3866:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3877:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3889:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3897:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3821:264:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4227:1137:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4273:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4282:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4290:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4275:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4275:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4275:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4248:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4257:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4244:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4244:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4269:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4240:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4240:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4237:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4308:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4335:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4322:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4322:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4312:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4354:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4364:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4358:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4409:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4418:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4426:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4411:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4411:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4411:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4397:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4405:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4394:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4394:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4391:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4444:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4458:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4469:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4454:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4454:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4448:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4524:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4533:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4541:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4526:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4526:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4526:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4503:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4507:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4499:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4499:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4514:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4495:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4495:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4488:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4488:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4485:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4559:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4582:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4569:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4569:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4563:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4594:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4604:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "4598:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4617:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4667:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4627:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4627:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "4621:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4679:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4699:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4693:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4693:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4683:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4731:6:20"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "4739:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "4711:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4711:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4711:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4751:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4762:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "4755:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4784:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4792:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4777:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4777:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4777:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4804:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4815:6:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4823:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4811:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4811:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4804:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4835:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4850:2:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4854:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4846:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4846:11:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "4839:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4911:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4920:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4928:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4913:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4913:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4913:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4880:2:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4888:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "4891:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4884:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4884:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4876:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4876:19:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4897:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4872:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4872:28:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4902:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4869:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4869:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4866:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4946:15:20",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "4955:6:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4950:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5015:124:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "5036:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "5060:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "5041:18:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5041:23:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5029:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5029:36:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5029:36:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5078:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "5089:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5094:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5085:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5085:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "5078:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5110:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "5121:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5126:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5117:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5117:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "5110:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4981:1:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4984:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4978:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4978:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4988:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4990:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4999:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5002:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4995:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4995:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4974:3:20",
                                "statements": []
                              },
                              "src": "4970:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5148:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "5158:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5148:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5173:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5206:9:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5217:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5202:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5202:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5177:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5250:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5259:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5267:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5252:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5252:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5236:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5246:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5233:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5230:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5285:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5328:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5339:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5324:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5324:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5350:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "5295:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5295:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5285:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4185:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4196:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4208:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4216:6:20",
                            "type": ""
                          }
                        ],
                        "src": "4090:1274:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5438:186:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5484:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5493:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5501:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5486:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5486:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5459:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5468:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5455:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5455:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5480:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5451:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5451:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5448:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5519:36:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5545:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5532:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5532:23:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5523:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5588:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5564:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5564:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5564:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5603:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5613:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5603:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5404:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5415:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5427:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5369:255:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5709:179:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5755:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5764:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5772:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5757:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5757:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5757:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5730:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5739:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5726:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5726:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5751:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5722:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5722:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5719:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5790:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5809:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5803:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5803:16:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5794:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5852:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5828:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5828:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5828:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5867:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5877:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5867:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5675:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5686:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5698:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5629:259:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5963:120:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6009:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6018:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6026:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6011:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6011:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6011:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5984:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5993:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5980:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5980:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6005:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5976:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5976:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5973:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6044:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6067:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6054:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6054:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6044:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5929:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5940:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5952:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5893:190:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6149:376:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6159:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6179:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6173:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6173:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6163:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6201:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6206:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6194:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6194:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6194:19:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6222:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6232:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6226:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6245:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6256:3:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6261:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "6245:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6273:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6291:5:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6298:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6287:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6287:14:20"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6277:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6310:12:20",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "6319:3:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6314:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6380:120:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6401:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6412:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6406:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6406:13:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6394:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6394:26:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6394:26:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6433:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6444:3:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6449:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6440:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6440:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6433:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6465:25:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6479:6:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6487:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6475:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6475:15:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6465:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6342:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6345:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6339:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6339:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6353:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6355:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6364:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6367:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6360:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6360:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6355:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6335:3:20",
                                "statements": []
                              },
                              "src": "6331:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6509:10:20",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "6516:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6509:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6126:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6133:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6141:3:20",
                            "type": ""
                          }
                        ],
                        "src": "6088:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6579:426:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6589:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6609:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6603:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6603:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6593:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6631:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6636:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6624:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6624:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6624:19:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6652:12:20",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "6661:3:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6656:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6725:110:20",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6739:14:20",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "6749:4:20",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "6743:2:20",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6781:3:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6786:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6777:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6777:11:20"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "6790:2:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6773:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6773:20:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6809:5:20"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6816:1:20"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6805:3:20"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6805:13:20"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6820:2:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6801:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6801:22:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6795:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6795:29:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6766:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6766:59:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6766:59:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6684:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6687:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6681:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6681:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6695:21:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6697:17:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6706:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6709:4:20",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6702:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6702:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6697:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6677:3:20",
                                "statements": []
                              },
                              "src": "6673:162:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6869:64:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6898:3:20"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6903:6:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6894:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6894:16:20"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6912:4:20",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6890:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6890:27:20"
                                        },
                                        {
                                          "name": "end",
                                          "nodeType": "YulIdentifier",
                                          "src": "6919:3:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6883:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6883:40:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6883:40:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6850:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6853:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6847:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6847:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6844:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6942:57:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6957:3:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6970:6:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6978:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6966:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6966:15:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6987:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "6983:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6983:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6962:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6962:29:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6953:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6953:39:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6994:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6949:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6949:50:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6942:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6556:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6563:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6571:3:20",
                            "type": ""
                          }
                        ],
                        "src": "6530:475:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7341:518:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7351:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7361:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7355:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7419:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7434:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7442:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7430:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7430:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7412:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7412:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7412:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7466:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7477:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7462:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7462:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7486:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7494:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7482:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7482:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7455:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7455:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7455:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7518:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7529:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7514:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7514:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7534:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7507:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7507:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7507:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7547:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7590:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7602:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7613:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7598:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7598:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7561:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7561:57:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7551:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7638:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7649:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7634:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7634:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7658:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7666:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7654:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7654:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7627:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7627:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7627:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7686:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7729:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7737:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7700:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7700:44:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7690:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7764:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7775:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7760:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7760:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7785:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7793:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7781:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7781:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7753:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7753:51:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7753:51:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7813:40:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7838:6:20"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7846:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7821:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7821:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7813:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7278:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7289:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7297:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7305:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7313:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7321:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7332:4:20",
                            "type": ""
                          }
                        ],
                        "src": "7010:849:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8095:352:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8105:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8115:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8109:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8173:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8188:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8196:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8184:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8184:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8166:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8166:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8166:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8220:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8231:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8216:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8216:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8240:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8248:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8236:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8236:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8209:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8209:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8209:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8272:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8283:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8268:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8268:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8288:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8261:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8261:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8261:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8315:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8326:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8311:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8311:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8331:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8304:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8304:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8304:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8358:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8369:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8354:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8354:19:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8375:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8347:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8347:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8347:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8388:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8413:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8425:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8436:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8421:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8421:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8396:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8396:45:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8388:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8032:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8043:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8051:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8059:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8067:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8075:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8086:4:20",
                            "type": ""
                          }
                        ],
                        "src": "7864:583:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8603:110:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8620:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8631:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8613:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8613:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8613:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8643:64:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8680:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8692:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8703:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8688:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8688:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8651:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8651:56:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8643:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "8572:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8583:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8594:4:20",
                            "type": ""
                          }
                        ],
                        "src": "8452:261:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8947:236:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8964:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8975:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8957:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8957:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8957:21:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8987:70:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9030:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9042:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9053:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9038:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9038:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "9001:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9001:56:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8991:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9077:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9088:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9073:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9073:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9097:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9105:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9093:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9093:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9066:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9066:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9066:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9125:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9162:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9170:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "9133:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9133:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9125:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8908:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8919:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8927:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8938:4:20",
                            "type": ""
                          }
                        ],
                        "src": "8718:465:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9283:92:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9293:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9305:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9316:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9301:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9301:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9293:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9335:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "9360:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9353:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9353:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9346:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9346:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9328:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9328:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9328:41:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9252:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9263:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9274:4:20",
                            "type": ""
                          }
                        ],
                        "src": "9188:187:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9501:98:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9518:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9529:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9511:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9511:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9511:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9541:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9566:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9578:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9589:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9574:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9574:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9549:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9549:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9541:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9470:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9481:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9492:4:20",
                            "type": ""
                          }
                        ],
                        "src": "9380:219:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9778:242:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9795:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9806:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9788:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9788:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9788:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9829:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9840:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9825:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9825:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9845:2:20",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9818:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9818:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9818:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9868:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9879:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9864:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9864:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9884:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to non ERC1155"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9857:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9857:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9857:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9939:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9950:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9935:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9935:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9955:22:20",
                                    "type": "",
                                    "value": "Receiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9928:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9928:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9928:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9987:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9999:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10010:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9995:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9995:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9987:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9755:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9769:4:20",
                            "type": ""
                          }
                        ],
                        "src": "9604:416:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10199:237:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10216:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10227:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10209:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10209:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10209:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10250:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10261:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10246:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10246:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10266:2:20",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10239:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10239:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10239:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10289:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10300:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10285:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10285:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10305:34:20",
                                    "type": "",
                                    "value": "ERC1155: caller is not token own"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10278:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10278:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10278:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10360:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10371:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10356:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10356:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10376:17:20",
                                    "type": "",
                                    "value": "er nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10349:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10349:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10349:45:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10403:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10415:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10426:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10411:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10411:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10403:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10176:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10190:4:20",
                            "type": ""
                          }
                        ],
                        "src": "10025:411:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10615:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10632:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10643:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10625:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10625:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10625:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10666:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10677:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10662:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10662:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10682:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10655:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10655:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10655:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10705:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10716:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10701:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10701:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10721:34:20",
                                    "type": "",
                                    "value": "ERC1155: ERC1155Receiver rejecte"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10694:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10694:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10694:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10776:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10787:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10772:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10772:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10792:10:20",
                                    "type": "",
                                    "value": "d tokens"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10765:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10765:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10765:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10812:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10824:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10835:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10820:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10820:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10812:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10592:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10606:4:20",
                            "type": ""
                          }
                        ],
                        "src": "10441:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11024:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11041:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11052:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11034:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11034:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11034:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11075:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11086:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11071:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11071:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11091:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11064:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11064:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11064:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11114:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11125:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11110:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11110:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11130:34:20",
                                    "type": "",
                                    "value": "ERC1155: address zero is not a v"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11103:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11103:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11103:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11185:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11196:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11181:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11181:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11201:12:20",
                                    "type": "",
                                    "value": "alid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11174:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11174:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11174:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11223:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11235:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11246:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11231:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11223:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11001:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11015:4:20",
                            "type": ""
                          }
                        ],
                        "src": "10850:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11435:227:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11452:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11463:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11445:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11445:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11445:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11486:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11497:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11482:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11482:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11502:2:20",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11475:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11475:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11475:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11525:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11536:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11521:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11521:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11541:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11514:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11514:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11514:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11596:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11607:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11592:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11592:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11612:7:20",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11585:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11585:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11585:35:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11629:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11641:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11652:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11637:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11637:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11629:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11412:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11426:4:20",
                            "type": ""
                          }
                        ],
                        "src": "11261:401:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11841:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11858:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11869:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11851:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11851:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11851:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11892:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11903:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11888:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11888:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11908:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11881:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11881:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11881:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11931:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11942:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11927:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11927:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11947:34:20",
                                    "type": "",
                                    "value": "ERC1155: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11920:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11920:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11920:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12002:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12013:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11998:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11998:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12018:12:20",
                                    "type": "",
                                    "value": "r transfer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11991:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11991:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11991:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12040:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12052:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12063:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12048:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12048:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12040:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11818:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11832:4:20",
                            "type": ""
                          }
                        ],
                        "src": "11667:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12252:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12269:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12280:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12262:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12262:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12262:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12303:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12314:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12299:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12299:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12319:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12292:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12292:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12292:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12342:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12353:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12338:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12338:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12358:34:20",
                                    "type": "",
                                    "value": "ERC1155: setting approval status"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12331:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12331:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12331:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12413:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12424:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12409:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12409:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12429:11:20",
                                    "type": "",
                                    "value": " for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12402:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12402:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12402:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12450:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12462:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12473:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12458:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12458:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12450:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12229:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12243:4:20",
                            "type": ""
                          }
                        ],
                        "src": "12078:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12662:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12679:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12690:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12672:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12672:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12672:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12713:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12724:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12709:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12709:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12729:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12702:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12702:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12702:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12752:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12763:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12748:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12748:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12768:34:20",
                                    "type": "",
                                    "value": "ERC1155: accounts and ids length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12741:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12741:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12741:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12823:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12834:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12819:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12819:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12839:11:20",
                                    "type": "",
                                    "value": " mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12812:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12812:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12812:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12860:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12872:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12883:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12868:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12868:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12860:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12639:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12653:4:20",
                            "type": ""
                          }
                        ],
                        "src": "12488:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13072:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13089:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13100:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13082:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13082:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13082:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13123:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13134:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13119:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13119:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13139:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13112:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13112:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13112:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13162:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13173:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13158:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13158:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13178:34:20",
                                    "type": "",
                                    "value": "ERC1155: ids and amounts length "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13151:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13151:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13151:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13233:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13244:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13229:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13229:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13249:10:20",
                                    "type": "",
                                    "value": "mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13222:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13222:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13222:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13269:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13281:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13292:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13277:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13277:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13269:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13049:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13063:4:20",
                            "type": ""
                          }
                        ],
                        "src": "12898:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13408:76:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13418:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13430:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13441:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13426:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13426:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13418:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13460:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13471:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13453:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13453:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13453:25:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13377:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13388:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13399:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13307:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13618:119:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13628:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13640:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13651:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13636:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13636:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13628:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13670:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13681:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13663:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13663:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13663:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13708:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13719:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13704:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13704:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13724:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13697:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13697:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13697:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13579:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13590:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13598:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13609:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13489:248:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13811:114:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13855:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "13857:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13857:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13857:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13827:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13835:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13824:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13824:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "13821:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13886:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13902:1:20",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13905:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "13898:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13898:14:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13914:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13894:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13894:25:20"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "13886:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "13791:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "13802:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13742:183:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13978:80:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14005:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14007:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14007:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14007:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13994:1:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "14001:1:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "13997:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13997:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13991:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13991:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "13988:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14036:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14047:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14050:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14043:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14043:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "14036:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13961:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13964:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "13970:3:20",
                            "type": ""
                          }
                        ],
                        "src": "13930:128:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14118:382:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14128:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14142:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "14145:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "14138:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14138:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "14128:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14159:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "14189:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14195:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "14185:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14185:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "14163:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14236:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14238:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "14252:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14260:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "14248:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14248:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "14238:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "14216:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14209:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14209:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "14206:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14326:168:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:77:20",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:88:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:88:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14448:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14451:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14441:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14441:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14441:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14476:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14479:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14469:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14469:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14469:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "14282:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "14305:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14313:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "14302:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14302:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14279:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14279:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "14276:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "14098:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "14107:6:20",
                            "type": ""
                          }
                        ],
                        "src": "14063:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14552:202:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14562:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "14584:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "14600:4:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14606:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "14596:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14596:13:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14615:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "14611:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14611:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14592:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14592:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14580:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14580:40:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "14566:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14695:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "14697:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14697:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14697:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14638:10:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14650:18:20",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "14635:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14635:34:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14674:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14686:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "14671:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14671:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "14632:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14632:62:20"
                              },
                              "nodeType": "YulIf",
                              "src": "14629:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14733:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "14737:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14726:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14726:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14726:22:20"
                            }
                          ]
                        },
                        "name": "finalize_allocation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "14534:6:20",
                            "type": ""
                          },
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "14542:4:20",
                            "type": ""
                          }
                        ],
                        "src": "14505:249:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14806:88:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14837:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14839:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14839:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14839:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14822:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14833:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14829:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14829:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14819:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14819:17:20"
                              },
                              "nodeType": "YulIf",
                              "src": "14816:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14868:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14879:5:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14886:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14875:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14875:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "14868:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14788:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "14798:3:20",
                            "type": ""
                          }
                        ],
                        "src": "14759:135:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14931:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14948:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14951:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14941:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14941:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14941:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15045:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15048:4:20",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15038:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15038:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15038:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15069:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15072:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15062:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15062:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15062:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14899:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15120:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15137:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15140:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15130:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15130:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15130:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15234:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15237:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15227:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15227:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15227:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15258:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15261:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15251:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15251:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15251:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15088:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15320:142:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15365:91:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "15394:3:20"
                                        },
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "15399:3:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15404:1:20",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "returndatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "15379:14:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15379:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15379:27:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15419:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15430:3:20",
                                          "type": "",
                                          "value": "224"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "sig",
                                              "nodeType": "YulIdentifier",
                                              "src": "15441:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "15435:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15435:10:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15426:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15426:20:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "sig",
                                        "nodeType": "YulIdentifier",
                                        "src": "15419:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "15336:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15336:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15354:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15333:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15333:23:20"
                              },
                              "nodeType": "YulIf",
                              "src": "15330:2:20"
                            }
                          ]
                        },
                        "name": "return_data_selector",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "sig",
                            "nodeType": "YulTypedName",
                            "src": "15312:3:20",
                            "type": ""
                          }
                        ],
                        "src": "15277:185:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15514:624:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15554:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "15556:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "15530:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15530:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15548:4:20",
                                    "type": "",
                                    "value": "0x44"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15527:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15527:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "15524:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15572:21:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15590:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15584:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15584:9:20"
                              },
                              "variables": [
                                {
                                  "name": "data",
                                  "nodeType": "YulTypedName",
                                  "src": "15576:4:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15602:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15616:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "15612:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15612:6:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15606:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15642:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15648:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "returndatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "15655:14:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15655:16:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15673:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15651:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15651:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "15627:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15627:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15627:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15686:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15706:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15700:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15700:11:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15690:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15720:26:20",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "15730:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15730:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "15724:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15755:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15765:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "15759:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15841:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "15843:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15801:6:20"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "15809:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15798:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15798:14:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "15821:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15829:4:20",
                                            "type": "",
                                            "value": "0x24"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "15817:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15817:17:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "15836:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15814:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15814:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "15795:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15795:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "15792:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15859:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15874:4:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15880:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15870:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15870:17:20"
                              },
                              "variables": [
                                {
                                  "name": "msg",
                                  "nodeType": "YulTypedName",
                                  "src": "15863:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15896:24:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msg",
                                    "nodeType": "YulIdentifier",
                                    "src": "15916:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15910:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15910:10:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "15900:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15947:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "15949:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15935:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15943:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15932:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15932:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "15929:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16038:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "16040:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "msg",
                                            "nodeType": "YulIdentifier",
                                            "src": "15979:3:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "15984:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "15975:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15975:16:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15993:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15971:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15971:27:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "16008:4:20"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "16014:14:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16014:16:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "16004:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16004:27:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16033:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16000:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16000:36:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15968:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15968:69:20"
                              },
                              "nodeType": "YulIf",
                              "src": "15965:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "16076:4:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "16090:6:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "16098:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "16086:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16086:19:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16107:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16082:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16082:30:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "16056:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16056:57:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16056:57:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16122:10:20",
                              "value": {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "16129:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "16122:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "try_decode_error_message",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "15506:3:20",
                            "type": ""
                          }
                        ],
                        "src": "15467:671:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16187:133:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16298:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16307:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16310:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16300:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16300:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16300:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "16210:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "16221:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "16228:66:20",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "16217:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16217:78:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "16207:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16207:89:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "16200:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16200:97:20"
                              },
                              "nodeType": "YulIf",
                              "src": "16197:2:20"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "16176:5:20",
                            "type": ""
                          }
                        ],
                        "src": "16143:177:20"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_address_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_bytes(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(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_address_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_address(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\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        end := pos\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), end)\n        }\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\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), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes(value4, add(headStart, 160))\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        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_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_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_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__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), \"ERC1155: caller is not token own\")\n        mstore(add(headStart, 96), \"er nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__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), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n        mstore(add(headStart, 96), \"alid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__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), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__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), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__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), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__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), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\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_encode_tuple_t_uint256_t_uint256__to_t_uint256_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 array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\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 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, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(sig, sig, 4)\n            sig := shr(224, mload(sig))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a3660046110ed565b61018c565b6040519081526020015b60405180910390f35b6100c56100c03660046111e1565b610235565b60405190151581526020016100a9565b6100e86100e3366004611220565b6102d2565b6040516100a9919061139f565b610108610103366004610faa565b610366565b005b61011d610118366004611116565b610408565b6040516100a9919061135e565b6101086101383660046110b3565b61057e565b6100c561014b366004610f78565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611050565b61058d565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000148061029857506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806102cc57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600280546102e1906113ee565b80601f016020809104026020016040519081016040528092919081815260200182805461030d906113ee565b801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103825750610382853361014b565b6103f45760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f76656400000000000000000000000000000000006064820152608401610206565b6104018585858585610628565b5050505050565b606081518351146104815760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff8111156104ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156104d4578160200160208202803683370190505b50905060005b84518110156105765761053b85828151811061050657634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061052e57634e487b7160e01b600052603260045260246000fd5b602002602001015161018c565b82828151811061055b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015261056f81611456565b90506104da565b509392505050565b6105893383836108b7565b5050565b6001600160a01b0385163314806105a957506105a9853361014b565b61061b5760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f76656400000000000000000000000000000000006064820152608401610206565b61040185858585856109ac565b815183511461069f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166107035760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561084957600085828151811061073257634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061075e57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107f15760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061082e9084906113d6565b925050819055505050508061084290611456565b9050610707565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610899929190611371565b60405180910390a46108af818787878787610b57565b505050505050565b816001600160a01b0316836001600160a01b0316141561093f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610a105760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b336000610a1c85610d15565b90506000610a2985610d15565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610aaf5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610aec9084906113d6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610b4c848a8a8a8a8a610d6e565b505050505050505050565b6001600160a01b0384163b156108af5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610b9b90899089908890889088906004016112bd565b602060405180830381600087803b158015610bb557600080fd5b505af1925050508015610be5575060408051601f3d908101601f19168201909252610be291810190611204565b60015b610c9b57610bf161149d565b806308c379a01415610c2b5750610c066114b5565b80610c115750610c2d565b8060405162461bcd60e51b8152600401610206919061139f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d5d57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156108af5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610db2908990899088908890889060040161131b565b602060405180830381600087803b158015610dcc57600080fd5b505af1925050508015610dfc575060408051601f3d908101601f19168201909252610df991810190611204565b60015b610e0857610bf161149d565b6001600160e01b0319811663f23a6e6160e01b14610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610e9057600080fd5b919050565b600082601f830112610ea5578081fd5b81356020610eb2826113b2565b604051610ebf8282611429565b8381528281019150858301600585901b87018401881015610ede578586fd5b855b85811015610efc57813584529284019290840190600101610ee0565b5090979650505050505050565b600082601f830112610f19578081fd5b813567ffffffffffffffff811115610f3357610f33611487565b604051610f4a601f8301601f191660200182611429565b818152846020838601011115610f5e578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610f8a578182fd5b610f9383610e79565b9150610fa160208401610e79565b90509250929050565b600080600080600060a08688031215610fc1578081fd5b610fca86610e79565b9450610fd860208701610e79565b9350604086013567ffffffffffffffff80821115610ff4578283fd5b61100089838a01610e95565b94506060880135915080821115611015578283fd5b61102189838a01610e95565b93506080880135915080821115611036578283fd5b5061104388828901610f09565b9150509295509295909350565b600080600080600060a08688031215611067578081fd5b61107086610e79565b945061107e60208701610e79565b93506040860135925060608601359150608086013567ffffffffffffffff8111156110a7578182fd5b61104388828901610f09565b600080604083850312156110c5578182fd5b6110ce83610e79565b9150602083013580151581146110e2578182fd5b809150509250929050565b600080604083850312156110ff578182fd5b61110883610e79565b946020939093013593505050565b60008060408385031215611128578182fd5b823567ffffffffffffffff8082111561113f578384fd5b818501915085601f830112611152578384fd5b8135602061115f826113b2565b60405161116c8282611429565b8381528281019150858301600585901b870184018b101561118b578889fd5b8896505b848710156111b4576111a081610e79565b83526001969096019591830191830161118f565b50965050860135925050808211156111ca578283fd5b506111d785828601610e95565b9150509250929050565b6000602082840312156111f2578081fd5b81356111fd8161153f565b9392505050565b600060208284031215611215578081fd5b81516111fd8161153f565b600060208284031215611231578081fd5b5035919050565b6000815180845260208085019450808401835b838110156112675781518752958201959082019060010161124b565b509495945050505050565b60008151808452815b818110156112975760208185018101518683018201520161127b565b818111156112a85782602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526112e960a0830186611238565b82810360608401526112fb8186611238565b9050828103608084015261130f8185611272565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261135360a0830184611272565b979650505050505050565b6020815260006111fd6020830184611238565b6040815260006113846040830185611238565b82810360208401526113968185611238565b95945050505050565b6020815260006111fd6020830184611272565b600067ffffffffffffffff8211156113cc576113cc611487565b5060051b60200190565b600082198211156113e9576113e9611471565b500190565b600181811c9082168061140257607f821691505b6020821081141561142357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561144f5761144f611487565b6040525050565b600060001982141561146a5761146a611471565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156114b257600481823e5160e01c5b90565b600060443d10156114c35790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114f357505050505090565b828501915081518181111561150b5750505050505090565b843d87010160208285010111156115255750505050505090565b61153460208286010187611429565b509095945050505050565b6001600160e01b03198116811461155557600080fd5b5056fea2646970667358221220101d0484e5725584bea369855012adfc4ba5740124df7e649512b517ba4787a064736f6c63430008040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0x10ED JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x235 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0x366 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x1116 JUMP JUMPDEST PUSH2 0x408 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x135E JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B3 JUMP JUMPDEST PUSH2 0x57E JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xF78 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x298 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x2CC JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2E1 SWAP1 PUSH2 0x13EE 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 0x30D SWAP1 PUSH2 0x13EE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x35A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x35A 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 0x33D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x382 JUMPI POP PUSH2 0x382 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x3F4 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206E6F7220617070726F7665640000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x401 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x628 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x481 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4AB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4D4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x576 JUMPI PUSH2 0x53B DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x506 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x52E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x55B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x56F DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP1 POP PUSH2 0x4DA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x589 CALLER DUP4 DUP4 PUSH2 0x8B7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x5A9 JUMPI POP PUSH2 0x5A9 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x61B 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206E6F7220617070726F7665640000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x401 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9AC JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x69F 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x703 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x732 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x82E SWAP1 DUP5 SWAP1 PUSH2 0x13D6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x842 SWAP1 PUSH2 0x1456 JUMP JUMPDEST SWAP1 POP PUSH2 0x707 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x899 SWAP3 SWAP2 SWAP1 PUSH2 0x1371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x8AF DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB57 JUMP JUMPDEST POP POP POP 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 EQ ISZERO PUSH2 0x93F 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA10 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xA1C DUP6 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA29 DUP6 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xAEC SWAP1 DUP5 SWAP1 PUSH2 0x13D6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xB4C DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD6E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xB9B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x12BD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBE5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBE2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC9B JUMPI PUSH2 0xBF1 PUSH2 0x149D JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0xC2B JUMPI POP PUSH2 0xC06 PUSH2 0x14B5 JUMP JUMPDEST DUP1 PUSH2 0xC11 JUMPI POP PUSH2 0xC2D JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0x139F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xD0C 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD5D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xDB2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x131B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xDFC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xDF9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xE08 JUMPI PUSH2 0xBF1 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xD0C 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xEB2 DUP3 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEBF DUP3 DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0xEDE JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xEE0 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF19 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF33 JUMPI PUSH2 0xF33 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF4A PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xF5E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF8A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xF93 DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP2 POP PUSH2 0xFA1 PUSH1 0x20 DUP5 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFC1 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xFCA DUP7 PUSH2 0xE79 JUMP JUMPDEST SWAP5 POP PUSH2 0xFD8 PUSH1 0x20 DUP8 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1000 DUP10 DUP4 DUP11 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1015 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1021 DUP10 DUP4 DUP11 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1036 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1043 DUP9 DUP3 DUP10 ADD PUSH2 0xF09 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1067 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1070 DUP7 PUSH2 0xE79 JUMP JUMPDEST SWAP5 POP PUSH2 0x107E PUSH1 0x20 DUP8 ADD PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1043 DUP9 DUP3 DUP10 ADD PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10C5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10CE DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x10E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1108 DUP4 PUSH2 0xE79 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x113F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1152 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x115F DUP3 PUSH2 0x13B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116C DUP3 DUP3 PUSH2 0x1429 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x118B JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x11B4 JUMPI PUSH2 0x11A0 DUP2 PUSH2 0xE79 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x118F JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x11CA JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x11D7 DUP6 DUP3 DUP7 ADD PUSH2 0xE95 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x11FD DUP2 PUSH2 0x153F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1215 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11FD DUP2 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1231 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1267 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x124B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x127B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x12A8 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x12E9 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1238 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x12FB DUP2 DUP7 PUSH2 0x1238 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x130F DUP2 DUP6 PUSH2 0x1272 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1272 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x11FD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1238 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1384 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1238 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1396 DUP2 DUP6 PUSH2 0x1238 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x11FD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x1487 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x13E9 JUMPI PUSH2 0x13E9 PUSH2 0x1471 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1402 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1423 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144F JUMPI PUSH2 0x144F PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x146A JUMPI PUSH2 0x146A PUSH2 0x1471 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x14B2 JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x14C3 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x14F3 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x150B JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1525 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1534 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x1429 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SAR DIV DUP5 0xE5 PUSH19 0x5584BEA369855012ADFC4BA5740124DF7E6495 SLT 0xB5 OR 0xBA SELFBALANCE DUP8 LOG0 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "570:16691:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227;;;;;;:::i;:::-;;:::i;:::-;;;13453:25:20;;;13441:2;13426:18;2185:227:4;;;;;;;;1236:305;;;;;;:::i;:::-;;:::i;:::-;;;9353:14:20;;9346:22;9328:41;;9316:2;9301:18;1236:305:4;9283:92:20;1940:103:4;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4065:427::-;;;;;;:::i;:::-;;:::i;:::-;;2569:508;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3145:153::-;;;;;;:::i;:::-;;:::i;3365:166::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3487:27:4;;;3464:4;3487:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3365:166;3598:395;;;;;;:::i;:::-;;:::i;2185:227::-;2271:7;-1:-1:-1;;;;;2298:21:4;;2290:76;;;;-1:-1:-1;;;2290:76:4;;11052:2:20;2290:76:4;;;11034:21:20;11091:2;11071:18;;;11064:30;11130:34;11110:18;;;11103:62;11201:12;11181:18;;;11174:40;11231:19;;2290:76:4;;;;;;;;;-1:-1:-1;2383:9:4;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:4;;;;;;;;;;;;2185:227::o;1236:305::-;1338:4;-1:-1:-1;;;;;;1373:41:4;;1388:26;1373:41;;:109;;-1:-1:-1;;;;;;;1430:52:4;;1445:37;1430:52;1373:109;:161;;;-1:-1:-1;952:25:16;-1:-1:-1;;;;;;937:40:16;;;1498:36:4;1354:180;1236:305;-1:-1:-1;;1236:305:4:o;1940:103::-;2000:13;2032:4;2025:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:103;;;:::o;4065:427::-;-1:-1:-1;;;;;4290:20:4;;719:10:12;4290:20:4;;:60;;-1:-1:-1;4314:36:4;4331:4;719:10:12;3365:166:4;:::i;4314:36::-;4269:154;;;;-1:-1:-1;;;4269:154:4;;10227:2:20;4269:154:4;;;10209:21:20;10266:2;10246:18;;;10239:30;10305:34;10285:18;;;10278:62;10376:17;10356:18;;;10349:45;10411:19;;4269:154:4;10199:237:20;4269:154:4;4433:52;4456:4;4462:2;4466:3;4471:7;4480:4;4433:22;:52::i;:::-;4065:427;;;;;:::o;2569:508::-;2720:16;2779:3;:10;2760:8;:15;:29;2752:83;;;;-1:-1:-1;;;2752:83:4;;12690:2:20;2752:83:4;;;12672:21:20;12729:2;12709:18;;;12702:30;12768:34;12748:18;;;12741:62;12839:11;12819:18;;;12812:39;12868:19;;2752:83:4;12662:231:20;2752:83:4;2846:30;2893:8;:15;2879:30;;;;;;-1:-1:-1;;;2879:30:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2879:30:4;;2846:63;;2925:9;2920:120;2944:8;:15;2940:1;:19;2920:120;;;2999:30;3009:8;3018:1;3009:11;;;;;;-1:-1:-1;;;3009:11:4;;;;;;;;;;;;;;;3022:3;3026:1;3022:6;;;;;;-1:-1:-1;;;3022:6:4;;;;;;;;;;;;;;;2999:9;:30::i;:::-;2980:13;2994:1;2980:16;;;;;;-1:-1:-1;;;2980:16:4;;;;;;;;;;;;;;;;;;:49;2961:3;;;:::i;:::-;;;2920:120;;;-1:-1:-1;3057:13:4;2569:508;-1:-1:-1;;;2569:508:4:o;3145:153::-;3239:52;719:10:12;3272:8:4;3282;3239:18;:52::i;:::-;3145:153;;:::o;3598:395::-;-1:-1:-1;;;;;3798:20:4;;719:10:12;3798:20:4;;:60;;-1:-1:-1;3822:36:4;3839:4;719:10:12;3365:166:4;:::i;3822:36::-;3777:154;;;;-1:-1:-1;;;3777:154:4;;10227:2:20;3777:154:4;;;10209:21:20;10266:2;10246:18;;;10239:30;10305:34;10285:18;;;10278:62;10376:17;10356:18;;;10349:45;10411:19;;3777:154:4;10199:237:20;3777:154:4;3941:45;3959:4;3965:2;3969;3973:6;3981:4;3941:17;:45::i;6235:1115::-;6455:7;:14;6441:3;:10;:28;6433:81;;;;-1:-1:-1;;;6433:81:4;;13100:2:20;6433:81:4;;;13082:21:20;13139:2;13119:18;;;13112:30;13178:34;13158:18;;;13151:62;13249:10;13229:18;;;13222:38;13277:19;;6433:81:4;13072:230:20;6433:81:4;-1:-1:-1;;;;;6532:16:4;;6524:66;;;;-1:-1:-1;;;6524:66:4;;11463:2:20;6524:66:4;;;11445:21:20;11502:2;11482:18;;;11475:30;11541:34;11521:18;;;11514:62;-1:-1:-1;;;11592:18:20;;;11585:35;11637:19;;6524:66:4;11435:227:20;6524:66:4;719:10:12;6601:16:4;6714:411;6738:3;:10;6734:1;:14;6714:411;;;6769:10;6782:3;6786:1;6782:6;;;;;;-1:-1:-1;;;6782:6:4;;;;;;;;;;;;;;;6769:19;;6802:14;6819:7;6827:1;6819:10;;;;;;-1:-1:-1;;;6819:10:4;;;;;;;;;;;;;;;;;;;;6844:19;6866:13;;;;;;;;;;-1:-1:-1;;;;;6866:19:4;;;;;;;;;;;;6819:10;;-1:-1:-1;6907:21:4;;;;6899:76;;;;-1:-1:-1;;;6899:76:4;;11869:2:20;6899:76:4;;;11851:21:20;11908:2;11888:18;;;11881:30;11947:34;11927:18;;;11920:62;-1:-1:-1;;;11998:18:20;;;11991:40;12048:19;;6899:76:4;11841:232:20;6899:76:4;7017:9;:13;;;;;;;;;;;-1:-1:-1;;;;;7017:19:4;;;;;;;;;;7039:20;;;7017:42;;7087:17;;;;;;;:27;;7039:20;;7017:9;7087:27;;7039:20;;7087:27;:::i;:::-;;;;;;;;6714:411;;;6750:3;;;;:::i;:::-;;;6714:411;;;;7170:2;-1:-1:-1;;;;;7140:47:4;7164:4;-1:-1:-1;;;;;7140:47:4;7154:8;-1:-1:-1;;;;;7140:47:4;;7174:3;7179:7;7140:47;;;;;;;:::i;:::-;;;;;;;;7268:75;7304:8;7314:4;7320:2;7324:3;7329:7;7338:4;7268:35;:75::i;:::-;6235:1115;;;;;;:::o;12912:323::-;13062:8;-1:-1:-1;;;;;13053:17:4;:5;-1:-1:-1;;;;;13053:17:4;;;13045:71;;;;-1:-1:-1;;;13045:71:4;;12280:2:20;13045:71:4;;;12262:21:20;12319:2;12299:18;;;12292:30;12358:34;12338:18;;;12331:62;12429:11;12409:18;;;12402:39;12458:19;;13045:71:4;12252:231:20;13045:71:4;-1:-1:-1;;;;;13126:25:4;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13126:46:4;;;;;;;;;;13187:41;;9328::20;;;13187::4;;9301:18:20;13187:41:4;;;;;;;12912:323;;;:::o;4942:947::-;-1:-1:-1;;;;;5123:16:4;;5115:66;;;;-1:-1:-1;;;5115:66:4;;11463:2:20;5115:66:4;;;11445:21:20;11502:2;11482:18;;;11475:30;11541:34;11521:18;;;11514:62;-1:-1:-1;;;11592:18:20;;;11585:35;11637:19;;5115:66:4;11435:227:20;5115:66:4;719:10:12;5192:16:4;5256:21;5274:2;5256:17;:21::i;:::-;5233:44;;5287:24;5314:25;5332:6;5314:17;:25::i;:::-;5287:52;;5421:19;5443:13;;;;;;;;;;;-1:-1:-1;;;;;5443:19:4;;;;;;;;;;5480:21;;;;5472:76;;;;-1:-1:-1;;;5472:76:4;;11869:2:20;5472:76:4;;;11851:21:20;11908:2;11888:18;;;11881:30;11947:34;11927:18;;;11920:62;-1:-1:-1;;;11998:18:20;;;11991:40;12048:19;;5472:76:4;11841:232:20;5472:76:4;5582:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5582:19:4;;;;;;;;;;5604:20;;;5582:42;;5644:17;;;;;;;:27;;5604:20;;5582:9;5644:27;;5604:20;;5644:27;:::i;:::-;;;;-1:-1:-1;;5687:46:4;;;13663:25:20;;;13719:2;13704:18;;13697:34;;;-1:-1:-1;;;;;5687:46:4;;;;;;;;;;;;;;13636:18:20;5687:46:4;;;;;;;5814:68;5845:8;5855:4;5861:2;5865;5869:6;5877:4;5814:30;:68::i;:::-;4942:947;;;;;;;;;:::o;16268:792::-;-1:-1:-1;;;;;16500:13:4;;1465:19:11;:23;16496:558:4;;16535:79;;-1:-1:-1;;;16535:79:4;;-1:-1:-1;;;;;16535:43:4;;;;;:79;;16579:8;;16589:4;;16595:3;;16600:7;;16609:4;;16535:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16535:79:4;;;;;;;;-1:-1:-1;;16535:79:4;;;;;;;;;;;;:::i;:::-;;;16531:513;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16920:6;16913:14;;-1:-1:-1;;;16913:14:4;;;;;;;;:::i;16531:513::-;;;16967:62;;-1:-1:-1;;;16967:62:4;;9806:2:20;16967:62:4;;;9788:21:20;9845:2;9825:18;;;9818:30;9884:34;9864:18;;;9857:62;9955:22;9935:18;;;9928:50;9995:19;;16967:62:4;9778:242:20;16531:513:4;-1:-1:-1;;;;;;16693:60:4;;-1:-1:-1;;;16693:60:4;16689:157;;16777:50;;-1:-1:-1;;;16777:50:4;;10643:2:20;16777:50:4;;;10625:21:20;10682:2;10662:18;;;10655:30;10721:34;10701:18;;;10694:62;-1:-1:-1;;;10772:18:20;;;10765:38;10820:19;;16777:50:4;10615:230:20;16689:157:4;16615:245;16268:792;;;;;;:::o;17066:193::-;17185:16;;;17199:1;17185:16;;;;;;;;;17132;;17160:22;;17185:16;;;;;;;;;;;;-1:-1:-1;17185:16:4;17160:41;;17222:7;17211:5;17217:1;17211:8;;;;;;-1:-1:-1;;;17211:8:4;;;;;;;;;;;;;;;;;;:18;17247:5;17066:193;-1:-1:-1;;17066:193:4:o;15537:725::-;-1:-1:-1;;;;;15744:13:4;;1465:19:11;:23;15740:516:4;;15779:72;;-1:-1:-1;;;15779:72:4;;-1:-1:-1;;;;;15779:38:4;;;;;:72;;15818:8;;15828:4;;15834:2;;15838:6;;15846:4;;15779:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15779:72:4;;;;;;;;-1:-1:-1;;15779:72:4;;;;;;;;;;;;:::i;:::-;;;15775:471;;;;:::i;:::-;-1:-1:-1;;;;;;15900:55:4;;-1:-1:-1;;;15900:55:4;15896:152;;15979:50;;-1:-1:-1;;;15979:50:4;;10643:2:20;15979:50:4;;;10625:21:20;10682:2;10662:18;;;10655:30;10721:34;10701:18;;;10694:62;-1:-1:-1;;;10772:18:20;;;10765:38;10820:19;;15979:50:4;10615:230:20;14:196;82:20;;-1:-1:-1;;;;;131:54:20;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:755::-;269:5;322:3;315:4;307:6;303:17;299:27;289:2;;344:5;337;330:20;289:2;384:6;371:20;410:4;433:43;473:2;433:43;:::i;:::-;505:2;499:9;517:31;545:2;537:6;517:31;:::i;:::-;583:18;;;617:15;;;;-1:-1:-1;652:15:20;;;702:1;698:10;;;686:23;;682:32;;679:41;-1:-1:-1;676:2:20;;;737:5;730;723:20;676:2;763:5;777:163;791:2;788:1;785:9;777:163;;;848:17;;836:30;;886:12;;;;918;;;;809:1;802:9;777:163;;;-1:-1:-1;958:6:20;;279:691;-1:-1:-1;;;;;;;279:691:20:o;975:575::-;1017:5;1070:3;1063:4;1055:6;1051:17;1047:27;1037:2;;1092:5;1085;1078:20;1037:2;1132:6;1119:20;1158:18;1154:2;1151:26;1148:2;;;1180:18;;:::i;:::-;1229:2;1223:9;1241:67;1296:2;1277:13;;-1:-1:-1;;1273:27:20;1302:4;1269:38;1223:9;1241:67;:::i;:::-;1332:2;1324:6;1317:18;1378:3;1371:4;1366:2;1358:6;1354:15;1350:26;1347:35;1344:2;;;1399:5;1392;1385:20;1344:2;1467;1460:4;1452:6;1448:17;1441:4;1433:6;1429:17;1416:54;1490:15;;;1507:4;1486:26;1479:41;;;;1494:6;1027:523;-1:-1:-1;;1027:523:20:o;1555:270::-;1623:6;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1733:29;1752:9;1733:29;:::i;:::-;1723:39;;1781:38;1815:2;1804:9;1800:18;1781:38;:::i;:::-;1771:48;;1642:183;;;;;:::o;1830:983::-;1984:6;1992;2000;2008;2016;2069:3;2057:9;2048:7;2044:23;2040:33;2037:2;;;2091:6;2083;2076:22;2037:2;2119:29;2138:9;2119:29;:::i;:::-;2109:39;;2167:38;2201:2;2190:9;2186:18;2167:38;:::i;:::-;2157:48;;2256:2;2245:9;2241:18;2228:32;2279:18;2320:2;2312:6;2309:14;2306:2;;;2341:6;2333;2326:22;2306:2;2369:61;2422:7;2413:6;2402:9;2398:22;2369:61;:::i;:::-;2359:71;;2483:2;2472:9;2468:18;2455:32;2439:48;;2512:2;2502:8;2499:16;2496:2;;;2533:6;2525;2518:22;2496:2;2561:63;2616:7;2605:8;2594:9;2590:24;2561:63;:::i;:::-;2551:73;;2677:3;2666:9;2662:19;2649:33;2633:49;;2707:2;2697:8;2694:16;2691:2;;;2728:6;2720;2713:22;2691:2;;2756:51;2799:7;2788:8;2777:9;2773:24;2756:51;:::i;:::-;2746:61;;;2027:786;;;;;;;;:::o;2818:626::-;2922:6;2930;2938;2946;2954;3007:3;2995:9;2986:7;2982:23;2978:33;2975:2;;;3029:6;3021;3014:22;2975:2;3057:29;3076:9;3057:29;:::i;:::-;3047:39;;3105:38;3139:2;3128:9;3124:18;3105:38;:::i;:::-;3095:48;;3190:2;3179:9;3175:18;3162:32;3152:42;;3241:2;3230:9;3226:18;3213:32;3203:42;;3296:3;3285:9;3281:19;3268:33;3324:18;3316:6;3313:30;3310:2;;;3361:6;3353;3346:22;3310:2;3389:49;3430:7;3421:6;3410:9;3406:22;3389:49;:::i;3449:367::-;3514:6;3522;3575:2;3563:9;3554:7;3550:23;3546:32;3543:2;;;3596:6;3588;3581:22;3543:2;3624:29;3643:9;3624:29;:::i;:::-;3614:39;;3703:2;3692:9;3688:18;3675:32;3750:5;3743:13;3736:21;3729:5;3726:32;3716:2;;3777:6;3769;3762:22;3716:2;3805:5;3795:15;;;3533:283;;;;;:::o;3821:264::-;3889:6;3897;3950:2;3938:9;3929:7;3925:23;3921:32;3918:2;;;3971:6;3963;3956:22;3918:2;3999:29;4018:9;3999:29;:::i;:::-;3989:39;4075:2;4060:18;;;;4047:32;;-1:-1:-1;;;3908:177:20:o;4090:1274::-;4208:6;4216;4269:2;4257:9;4248:7;4244:23;4240:32;4237:2;;;4290:6;4282;4275:22;4237:2;4335:9;4322:23;4364:18;4405:2;4397:6;4394:14;4391:2;;;4426:6;4418;4411:22;4391:2;4469:6;4458:9;4454:22;4444:32;;4514:7;4507:4;4503:2;4499:13;4495:27;4485:2;;4541:6;4533;4526:22;4485:2;4582;4569:16;4604:4;4627:43;4667:2;4627:43;:::i;:::-;4699:2;4693:9;4711:31;4739:2;4731:6;4711:31;:::i;:::-;4777:18;;;4811:15;;;;-1:-1:-1;4846:11:20;;;4888:1;4884:10;;;4876:19;;4872:28;;4869:41;-1:-1:-1;4866:2:20;;;4928:6;4920;4913:22;4866:2;4955:6;4946:15;;4970:169;4984:2;4981:1;4978:9;4970:169;;;5041:23;5060:3;5041:23;:::i;:::-;5029:36;;5002:1;4995:9;;;;;5085:12;;;;5117;;4970:169;;;-1:-1:-1;5158:6:20;-1:-1:-1;;5202:18:20;;5189:32;;-1:-1:-1;;5233:16:20;;;5230:2;;;5267:6;5259;5252:22;5230:2;;5295:63;5350:7;5339:8;5328:9;5324:24;5295:63;:::i;:::-;5285:73;;;4227:1137;;;;;:::o;5369:255::-;5427:6;5480:2;5468:9;5459:7;5455:23;5451:32;5448:2;;;5501:6;5493;5486:22;5448:2;5545:9;5532:23;5564:30;5588:5;5564:30;:::i;:::-;5613:5;5438:186;-1:-1:-1;;;5438:186:20:o;5629:259::-;5698:6;5751:2;5739:9;5730:7;5726:23;5722:32;5719:2;;;5772:6;5764;5757:22;5719:2;5809:9;5803:16;5828:30;5852:5;5828:30;:::i;5893:190::-;5952:6;6005:2;5993:9;5984:7;5980:23;5976:32;5973:2;;;6026:6;6018;6011:22;5973:2;-1:-1:-1;6054:23:20;;5963:120;-1:-1:-1;5963:120:20:o;6088:437::-;6141:3;6179:5;6173:12;6206:6;6201:3;6194:19;6232:4;6261:2;6256:3;6252:12;6245:19;;6298:2;6291:5;6287:14;6319:3;6331:169;6345:6;6342:1;6339:13;6331:169;;;6406:13;;6394:26;;6440:12;;;;6475:15;;;;6367:1;6360:9;6331:169;;;-1:-1:-1;6516:3:20;;6149:376;-1:-1:-1;;;;;6149:376:20:o;6530:475::-;6571:3;6609:5;6603:12;6636:6;6631:3;6624:19;6661:3;6673:162;6687:6;6684:1;6681:13;6673:162;;;6749:4;6805:13;;;6801:22;;6795:29;6777:11;;;6773:20;;6766:59;6702:12;6673:162;;;6853:6;6850:1;6847:13;6844:2;;;6919:3;6912:4;6903:6;6898:3;6894:16;6890:27;6883:40;6844:2;-1:-1:-1;6987:2:20;6966:15;-1:-1:-1;;6962:29:20;6953:39;;;;6994:4;6949:50;;6579:426;-1:-1:-1;;6579:426:20:o;7010:849::-;7332:4;-1:-1:-1;;;;;7442:2:20;7434:6;7430:15;7419:9;7412:34;7494:2;7486:6;7482:15;7477:2;7466:9;7462:18;7455:43;;7534:3;7529:2;7518:9;7514:18;7507:31;7561:57;7613:3;7602:9;7598:19;7590:6;7561:57;:::i;:::-;7666:9;7658:6;7654:22;7649:2;7638:9;7634:18;7627:50;7700:44;7737:6;7729;7700:44;:::i;:::-;7686:58;;7793:9;7785:6;7781:22;7775:3;7764:9;7760:19;7753:51;7821:32;7846:6;7838;7821:32;:::i;:::-;7813:40;7341:518;-1:-1:-1;;;;;;;;7341:518:20:o;7864:583::-;8086:4;-1:-1:-1;;;;;8196:2:20;8188:6;8184:15;8173:9;8166:34;8248:2;8240:6;8236:15;8231:2;8220:9;8216:18;8209:43;;8288:6;8283:2;8272:9;8268:18;8261:34;8331:6;8326:2;8315:9;8311:18;8304:34;8375:3;8369;8358:9;8354:19;8347:32;8396:45;8436:3;8425:9;8421:19;8413:6;8396:45;:::i;:::-;8388:53;8095:352;-1:-1:-1;;;;;;;8095:352:20:o;8452:261::-;8631:2;8620:9;8613:21;8594:4;8651:56;8703:2;8692:9;8688:18;8680:6;8651:56;:::i;8718:465::-;8975:2;8964:9;8957:21;8938:4;9001:56;9053:2;9042:9;9038:18;9030:6;9001:56;:::i;:::-;9105:9;9097:6;9093:22;9088:2;9077:9;9073:18;9066:50;9133:44;9170:6;9162;9133:44;:::i;:::-;9125:52;8947:236;-1:-1:-1;;;;;8947:236:20:o;9380:219::-;9529:2;9518:9;9511:21;9492:4;9549:44;9589:2;9578:9;9574:18;9566:6;9549:44;:::i;13742:183::-;13802:4;13835:18;13827:6;13824:30;13821:2;;;13857:18;;:::i;:::-;-1:-1:-1;13902:1:20;13898:14;13914:4;13894:25;;13811:114::o;13930:128::-;13970:3;14001:1;13997:6;13994:1;13991:13;13988:2;;;14007:18;;:::i;:::-;-1:-1:-1;14043:9:20;;13978:80::o;14063:437::-;14142:1;14138:12;;;;14185;;;14206:2;;14260:4;14252:6;14248:17;14238:27;;14206:2;14313;14305:6;14302:14;14282:18;14279:38;14276:2;;;-1:-1:-1;;;14347:1:20;14340:88;14451:4;14448:1;14441:15;14479:4;14476:1;14469:15;14276:2;;14118:382;;;:::o;14505:249::-;14615:2;14596:13;;-1:-1:-1;;14592:27:20;14580:40;;14650:18;14635:34;;14671:22;;;14632:62;14629:2;;;14697:18;;:::i;:::-;14733:2;14726:22;-1:-1:-1;;14552:202:20:o;14759:135::-;14798:3;-1:-1:-1;;14819:17:20;;14816:2;;;14839:18;;:::i;:::-;-1:-1:-1;14886:1:20;14875:13;;14806:88::o;14899:184::-;-1:-1:-1;;;14948:1:20;14941:88;15048:4;15045:1;15038:15;15072:4;15069:1;15062:15;15088:184;-1:-1:-1;;;15137:1:20;15130:88;15237:4;15234:1;15227:15;15261:4;15258:1;15251:15;15277:185;15312:3;15354:1;15336:16;15333:23;15330:2;;;15404:1;15399:3;15394;15379:27;15435:10;15430:3;15426:20;15330:2;15320:142;:::o;15467:671::-;15506:3;15548:4;15530:16;15527:26;15524:2;;;15514:624;:::o;15524:2::-;15590;15584:9;-1:-1:-1;;15655:16:20;15651:25;;15648:1;15584:9;15627:50;15706:4;15700:11;15730:16;15765:18;15836:2;15829:4;15821:6;15817:17;15814:25;15809:2;15801:6;15798:14;15795:45;15792:2;;;15843:5;;;;;15514:624;:::o;15792:2::-;15880:6;15874:4;15870:17;15859:28;;15916:3;15910:10;15943:2;15935:6;15932:14;15929:2;;;15949:5;;;;;;15514:624;:::o;15929:2::-;16033;16014:16;16008:4;16004:27;16000:36;15993:4;15984:6;15979:3;15975:16;15971:27;15968:69;15965:2;;;16040:5;;;;;;15514:624;:::o;15965:2::-;16056:57;16107:4;16098:6;16090;16086:19;16082:30;16076:4;16056:57;:::i;:::-;-1:-1:-1;16129:3:20;;15514:624;-1:-1:-1;;;;;15514:624:20:o;16143:177::-;-1:-1:-1;;;;;;16221:5:20;16217:78;16210:5;16207:89;16197:2;;16310:1;16307;16300:12;16197:2;16187:133;:::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"details\":\"See {_setURI}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x447a21c87433c0f11252912313a96f3454629ef88cca7a4eefbb283b3ec409f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d35750fb5ced798b82b8ab085eb5f71529b0d4f72152d182b5bebdc770b20d\",\"dweb:/ipfs/QmUqmyzRZxaLvSXig87HFZgiUxv9ivc2VqfAbxEw7rx32d\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"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/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "IERC1155Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"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/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol": {
        "ERC1155Burnable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "burnBatch",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "burn(address,uint256,uint256)": "f5298aca",
              "burnBatch(address,uint256[],uint256[])": "6b20c454",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC1155} that allows token holders to destroy both their own tokens and those that they have been approved to use. _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol\":\"ERC1155Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x447a21c87433c0f11252912313a96f3454629ef88cca7a4eefbb283b3ec409f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d35750fb5ced798b82b8ab085eb5f71529b0d4f72152d182b5bebdc770b20d\",\"dweb:/ipfs/QmUqmyzRZxaLvSXig87HFZgiUxv9ivc2VqfAbxEw7rx32d\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol\":{\"keccak256\":\"0xb11d1ade7146ac3da122e1f387ea82b0bd385d50823946c3f967dbffef3e9f4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a5fc67f024fd2d261543c52a33a2a90b96d2ea1867829e8e12fe6b89b53aee1\",\"dweb:/ipfs/QmPc3ryH7Yv4FoY14CGbaXuQVQ7iu2yrxVAtmbGrN7bscf\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol": {
        "ERC1155Supply": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "exists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "exists(uint256)": "4f558e79",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of ERC1155 that adds tracking of total supply per id. Useful for scenarios where Fungible and Non-fungible tokens have to be clearly identified. Note: While a totalSupply of 1 might mean the corresponding is an NFT, there is no guarantees that no other token with the same id are not going to be minted.\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol\":\"ERC1155Supply\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x447a21c87433c0f11252912313a96f3454629ef88cca7a4eefbb283b3ec409f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d35750fb5ced798b82b8ab085eb5f71529b0d4f72152d182b5bebdc770b20d\",\"dweb:/ipfs/QmUqmyzRZxaLvSXig87HFZgiUxv9ivc2VqfAbxEw7rx32d\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol\":{\"keccak256\":\"0xe3deb5f3b0c9d12944f62ab680f041bbf1910d9d3ac6b545b4b8e399643c538d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f5bc920c2f9859b02dce02d7d0211608398287c643d42ad048555c9b204dc8\",\"dweb:/ipfs/QmSu2MFkCSPNG6pRsXxMai7Do7EDqLwpnnHVDB7q2wHJnr\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "IERC1155MetadataURI": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"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.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":\"IERC1155MetadataURI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/common/ERC2981.sol": {
        "ERC2981": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"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\":\"Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the fee is specified in basis points by default. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. _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\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/common/ERC2981.sol\":\"ERC2981\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xa812eed728198acd2c30d06950a5bea8d68436e4f694dd892273266ec2f79f5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5522afc5c222c810d9ad67c45f37cb7169452fcf76692cad10ac8153c068daa\",\"dweb:/ipfs/QmX4XgnDp7pyvojQ6g5tacrUMCf7TED2qC2vERH9Xh9feZ\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0x9bc4d7eb03c4e87fd5122e03cdff5f60fa360d76925980ad022b2c6fac9876f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c6d7cfaac6b54599068126b75474c86ccbbaf386c3581abf82d9cda21b35c81\",\"dweb:/ipfs/QmPZteoCvkiUgv4TZxv2wiEKR5KqM83UCohHnSGw1RytpM\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "Address": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e5891579522428c2630502038dab943489fe6e660cea3766de38800bcd1fcc564736f6c63430008040033",
              "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 0x4E PC SWAP2 JUMPI SWAP6 0x22 TIMESTAMP DUP13 0x26 ADDRESS POP KECCAK256 CODESIZE 0xDA 0xB9 NUMBER 0x48 SWAP16 0xE6 0xE6 PUSH1 0xCE LOG3 PUSH23 0x6DE38800BCD1FCC564736F6C6343000804003300000000 ",
              "sourceMap": "194:8111:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:11;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e5891579522428c2630502038dab943489fe6e660cea3766de38800bcd1fcc564736f6c63430008040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E PC SWAP2 JUMPI SWAP6 0x22 TIMESTAMP DUP13 0x26 ADDRESS POP KECCAK256 CODESIZE 0xDA 0xB9 NUMBER 0x48 SWAP16 0xE6 0xE6 PUSH1 0xCE LOG3 PUSH23 0x6DE38800BCD1FCC564736F6C6343000804003300000000 ",
              "sourceMap": "194:8111:11:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "Strings": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066e297c08ba5d1150b76b91d7db6515cacd03f631c170fdbef416b90af44d0e764736f6c63430008040033",
              "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 PUSH7 0xE297C08BA5D115 SIGNEXTEND PUSH23 0xB91D7DB6515CACD03F631C170FDBEF416B90AF44D0E764 PUSH20 0x6F6C634300080400330000000000000000000000 ",
              "sourceMap": "161:2235:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:13;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122066e297c08ba5d1150b76b91d7db6515cacd03f631c170fdbef416b90af44d0e764736f6c63430008040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xE297C08BA5D115 SIGNEXTEND PUSH23 0xB91D7DB6515CACD03F631C170FDBEF416B90AF44D0E764 PUSH20 0x6F6C634300080400330000000000000000000000 ",
              "sourceMap": "161:2235:13:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ECDSA": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cdf847ae46c32a6702783938b1f57e5d90dda3ca979ccc7fc8063676a103c2c64736f6c63430008040033",
              "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 PUSH29 0xDF847AE46C32A6702783938B1F57E5D90DDA3CA979CCC7FC8063676A10 EXTCODECOPY 0x2C PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "369:9018:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;369:9018:14;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cdf847ae46c32a6702783938b1f57e5d90dda3ca979ccc7fc8063676a103c2c64736f6c63430008040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xDF847AE46C32A6702783938B1F57E5D90DDA3CA979CCC7FC8063676A10 EXTCODECOPY 0x2C PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "369:9018:14:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": {
        "EIP712": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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\":\"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}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"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/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"
        }
      },
      "contracts/LiquiditeamNft.sol": {
        "LiquiditeamNft": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "transferrer",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "newContractURI",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "previousAdminRole",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "newAdminRole",
                  "type": "bytes32"
                }
              ],
              "name": "RoleAdminChanged",
              "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": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "passId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferWithTransferPass",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "CONTRACT_URI_SETTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DEFAULT_ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PAUSER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "TRANSFERRER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "URI_SETTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "burnBatch",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "exists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "name": "getRoleAdmin",
              "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": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mintBatch",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "renounceRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "newURI",
                  "type": "string"
                }
              ],
              "name": "setContractURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "newURI",
                  "type": "string"
                }
              ],
              "name": "setURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "passId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "validUntil",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "newUri",
                  "type": "string"
                }
              ],
              "name": "transferWithTransferPass",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "unpause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4510:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "122:993:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "168:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "177:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "185:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "170:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "170:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "170:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "152:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "139:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "139:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "164:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "135:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "135:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "132:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "203:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "222:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "216:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "216:16:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "207:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "295:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "304:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "312:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "297:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "297:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "254:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "265:5:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "280:3:20",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "285:1:20",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "276:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "276:11:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "289:1:20",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "272:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "272:19:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "261:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "261:31:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "251:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "251:42:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "244:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "244:50:20"
                              },
                              "nodeType": "YulIf",
                              "src": "241:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "330:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "340:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "330:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "354:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "378:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "389:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "374:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "374:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "368:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "368:25:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "358:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "402:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "420:2:20",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "424:1:20",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "416:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "416:10:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "428:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "412:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "412:18:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "406:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "457:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "466:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "474:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "459:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "459:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "459:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "445:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "453:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "442:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "439:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "492:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "506:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "502:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "502:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "496:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "572:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "581:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "589:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "574:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "574:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "574:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "551:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "555:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "547:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "547:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "562:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "543:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "543:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "536:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "536:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "533:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "607:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "623:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:9:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "611:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "649:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "651:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "651:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "651:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "641:2:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "645:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "638:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "638:10:20"
                              },
                              "nodeType": "YulIf",
                              "src": "635:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "680:17:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "694:2:20",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "690:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "690:7:20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "684:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "706:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "726:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "720:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "720:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "710:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "738:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "760:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "784:2:20"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "788:4:20",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "780:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "780:13:20"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "795:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "776:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "776:22:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "800:2:20",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "772:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "772:31:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "805:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "768:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "768:40:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "756:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "756:53:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "742:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "868:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "870:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "870:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:10:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "824:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "824:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "847:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "859:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "844:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "844:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "821:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "821:46:20"
                              },
                              "nodeType": "YulIf",
                              "src": "818:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "906:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "910:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "899:22:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "937:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "945:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "930:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "930:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "930:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "994:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1003:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "996:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "996:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "996:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "971:2:20"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "975:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "967:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "967:11:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "980:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "963:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "963:20:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "985:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "960:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "960:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "957:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1055:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1059:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:11:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1068:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1076:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1064:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1064:15:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1081:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1029:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1029:55:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1029:55:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1093:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1103:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1093:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "80:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "91:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "103:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "111:6:20",
                            "type": ""
                          }
                        ],
                        "src": "14:1101:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1509:397:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1526:3:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1531:25:20",
                                    "type": "",
                                    "value": "AccessControl: account "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1519:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1519:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1519:38:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1566:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1586:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1580:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1580:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1570:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1628:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1636:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1624:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1624:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1647:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1652:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1643:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1643:12:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1657:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1602:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1602:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1602:62:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1673:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1687:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1692:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1683:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1683:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1677:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1719:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1723:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1715:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1715:11:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1728:19:20",
                                    "type": "",
                                    "value": " is missing role "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1708:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1708:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1708:40:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1757:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1779:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1773:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1773:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1761:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1821:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1829:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1817:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1817:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1840:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1844:2:20",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1836:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1836:11:20"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1849:8:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1795:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1867:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1882:2:20"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1886:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1878:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1878:17:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1897:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1874:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1874:26:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1867:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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": "1477:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1482:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1490:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1501:3:20",
                            "type": ""
                          }
                        ],
                        "src": "1120:786:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2124:276:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2134:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2146:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2157:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2142:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2142:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2134:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2177:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2188:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2170:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2170:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2170:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2215:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2226:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2211:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2211:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2231:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2204:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2204:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2204:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2258:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2269:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2254:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2254:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2274:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2247:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2247:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2247:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2301:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2312:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2297:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2297:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2317:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2290:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2290:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2290:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2355:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2340:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2340:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2365:6:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2381:3:20",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2386:1:20",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2377:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2377:11:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2390:1:20",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2373:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2373:19:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2361:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2361:32:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2333:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2333:61:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2333:61:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2061:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2072:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2080:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2088:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2096:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2104:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2115:4:20",
                            "type": ""
                          }
                        ],
                        "src": "1911:489:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2526:262:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2543:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2554:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2536:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2536:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2536:21:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2566:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2586:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2580:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2580:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2570:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2613:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2624:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2609:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2609:18:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2629:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2602:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2602:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2602:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2671:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2679:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2667:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2667:15:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2688:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2699:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2684:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2684:18:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2704:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2645:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2645:66:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2645:66:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2720:62:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2736:9:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2755:6:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2763:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2751:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2751:15:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2772:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2768:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2768:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2747:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2747:29:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2732:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2732:45:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2779:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2728:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2728:54:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2495:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2506:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2517:4:20",
                            "type": ""
                          }
                        ],
                        "src": "2405:383:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2967:182:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2984:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2995:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2977:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2977:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3029:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3034:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3068:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3073:34:20",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3046:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3046:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3046:62:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3117:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3129:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3140:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3125:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3125:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2944:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2958:4:20",
                            "type": ""
                          }
                        ],
                        "src": "2793:356:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3202:80:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3229:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3231:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3231:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3231:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3218:1:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "3225:1:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "3221:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3221:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3215:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3215:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3212:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3260:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3271:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3274:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3267:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3267:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "3260:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3185:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3188:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "3194:3:20",
                            "type": ""
                          }
                        ],
                        "src": "3154:128:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3339:116:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3398:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3400:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3400:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3400:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "3370:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3363:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3363:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "3356:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3356:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "3378:1:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3389:1:20",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3385:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3385:6:20"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "3393:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "3381:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3381:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3375:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3375:21:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3352:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3352:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3349:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3429:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3444:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3447:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "3440:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3440:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "3429:7:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3318:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3321:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "3327:7:20",
                            "type": ""
                          }
                        ],
                        "src": "3287:168:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3513:205:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3523:10:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3532:1:20",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3527:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3592:63:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "3617:3:20"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "3622:1:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3613:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3613:11:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3636:3:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3641:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3632:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3632:11:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3626:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3626:18:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3606:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3606:39:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3606:39:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3553:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3556:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3550:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3550:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3564:19:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3566:15:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3575:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3578:2:20",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3571:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3571:10:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3566:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3546:3:20",
                                "statements": []
                              },
                              "src": "3542:113:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3681:31:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "3694:3:20"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "3699:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3690:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3690:16:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3708:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3683:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3683:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3683:27:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3670:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3673:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3667:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3667:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3664:2:20"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3491:3:20",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "3496:3:20",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3501:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3460:258:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3770:89:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3797:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3799:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3799:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3799:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3790:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3783:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3783:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3780:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3828:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3839:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3850:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "3846:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3846:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3835:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3835:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3828:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3752:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "3762:3:20",
                            "type": ""
                          }
                        ],
                        "src": "3723:136:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3919:325:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3929:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3943:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "3946:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "3939:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3939:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "3929:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3960:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "3990:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3996:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3986:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3986:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "3964:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4037:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4039:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "4053:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4061:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4049:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4049:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "4039:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4017:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4010:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4010:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4007:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4127:111:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4148:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4155:3:20",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4160:10:20",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "4151:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4151:20:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4141:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4141:31:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4141:31:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4192:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4195:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4185:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4185:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4185:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4220:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4223:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4213:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4213:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4213:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4083:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "4106:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4114:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4103:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4103:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4080:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4077:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "3899:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3908:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3864:380:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4281:95:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4298:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4305:3:20",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4310:10:20",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4301:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4301:20:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4291:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4291:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4291:31:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4338:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4341:4:20",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4331:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4331:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4331:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4362:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4365:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4355:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4355:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4355:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4249:127:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4413:95:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4430:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4437:3:20",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4442:10:20",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4433:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4433:20:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4423:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4423:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4423:31:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4470:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4473:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4463:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4463:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4463:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4494:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4497:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4487:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4487:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4487:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4381:127:20"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\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(value1, value1) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\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    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 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 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 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 decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101406040523480156200001257600080fd5b506040516200413d3803806200413d83398101604081905262000035916200069e565b6040518060400160405280601a81526020017f4c6971756964697465616d4e66745472616e7366657250617373000000000000815250604051806040016040528060018152602001603160f81b81525060405180602001604052806000815250620000a6816200024460201b60201c565b506004805460ff19169055815160208084019190912082518383012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919290916080523060601b60c0526101205250620001559250600091503390506200025d565b620001817f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c336200025d565b620001ad7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a336200025d565b620001d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200025d565b620002057f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200025d565b620002317f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d7836200025d565b6200023c8162000301565b505062000915565b805162000259906002906020840190620005f8565b5050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620002595760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002bd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a6200032d8162000347565b815162000342906006906020850190620005f8565b505050565b62000353813362000356565b50565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff166200025957620003a2816001600160a01b03166014620003fc60201b6200104e1760201c565b620003b88360206200104e620003fc821b17811c565b604051602001620003cb92919062000774565b60408051601f198184030181529082905262461bcd60e51b8252620003f391600401620007ed565b60405180910390fd5b606060006200040d8360026200083d565b6200041a90600262000822565b6001600160401b038111156200044057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156200046b576020820181803683370190505b509050600360fc1b816000815181106200049557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620004d357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000620004f98460026200083d565b6200050690600162000822565b90505b6001811115620005a0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106200054a57634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106200056f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93620005988162000892565b905062000509565b508315620005f15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620003f3565b9392505050565b8280546200060690620008ac565b90600052602060002090601f0160209004810192826200062a576000855562000675565b82601f106200064557805160ff191683800117855562000675565b8280016001018555821562000675579182015b828111156200067557825182559160200191906001019062000658565b506200068392915062000687565b5090565b5b8082111562000683576000815560010162000688565b60008060408385031215620006b1578182fd5b82516001600160a01b0381168114620006c8578283fd5b60208401519092506001600160401b0380821115620006e5578283fd5b818501915085601f830112620006f9578283fd5b8151818111156200070e576200070e620008ff565b604051601f8201601f19908116603f01168101908382118183101715620007395762000739620008ff565b8160405282815288602084870101111562000752578586fd5b620007658360208301602088016200085f565b80955050505050509250929050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620007ae8160178501602088016200085f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620007e18160288401602088016200085f565b01602801949350505050565b60208152600082518060208401526200080e8160408501602087016200085f565b601f01601f19169190910160400192915050565b60008219821115620008385762000838620008e9565b500190565b60008160001904831182151516156200085a576200085a620008e9565b500290565b60005b838110156200087c57818101518382015260200162000862565b838111156200088c576000848401525b50505050565b600081620008a457620008a4620008e9565b506000190190565b600181811c90821680620008c157607f821691505b60208210811415620008e357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160601c60e05161010051610120516137d56200096860003960006124cd0152600061251c015260006124f7015260006124500152600061247a015260006124a401526137d56000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c80636b20c4541161010f578063bd85b039116100a2578063e8a3d48511610071578063e8a3d485146104d4578063e985e9c5146104dc578063f242432a14610518578063f5298aca1461052b57600080fd5b8063bd85b03914610453578063d539139314610473578063d547741f1461049a578063e63ab1e9146104ad57600080fd5b806391d14854116100de57806391d14854146103ec578063938e3d7b14610425578063a217fddf14610438578063a22cb4651461044057600080fd5b80636b20c45414610397578063731133e9146103aa5780637f345710146103bd5780638456cb59146103e457600080fd5b80632eb2c2d6116101875780634e1273f4116101565780634e1273f4146103235780634f558e79146103435780635c975abb1461036557806363ac5d971461037057600080fd5b80632eb2c2d6146102e25780632f2ff15d146102f557806336568abe146103085780633f4ba83a1461031b57600080fd5b8063121df247116101c3578063121df247146102725780631f7fdffa1461029957806323a45c61146102ac578063248a9ca3146102bf57600080fd5b8062fdd58e146101f457806301ffc9a71461021a57806302fe53051461023d5780630e89341c14610252575b600080fd5b610207610202366004613101565b61053e565b6040519081526020015b60405180910390f35b61022d6102283660046132b4565b6105e7565b6040519015158152602001610211565b61025061024b366004613384565b6105f8565b005b61026561026036600461327a565b61062f565b6040516102119190613588565b6102077f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a81565b6102506102a7366004613032565b6106d1565b6102506102ba3660046132ec565b61070e565b6102076102cd36600461327a565b60009081526003602052604090206001015490565b6102506102f0366004612eb8565b610a5a565b610250610303366004613292565b610ae7565b610250610316366004613292565b610b11565b610250610b99565b6103366103313660046131af565b610bce565b6040516102119190613547565b61022d61035136600461327a565b600090815260056020526040902054151590565b60045460ff1661022d565b6102077f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d781565b6102506103a5366004612fc1565b610d44565b6102506103b836600461315c565b610dcf565b6102077f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b610250610e05565b61022d6103fa366004613292565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610250610433366004613384565b610e37565b610207600081565b61025061044e3660046130c7565b610e74565b61020761046136600461327a565b60009081526005602052604090205490565b6102077f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102506104a8366004613292565b610e7f565b6102077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610265610ea4565b61022d6104ea366004612e86565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610250610526366004612f5e565b610f36565b61025061053936600461312a565b610fc3565b60006001600160a01b0383166105c15760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006105f28261127c565b92915050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c610622816112ba565b61062b826112c4565b5050565b600081815260076020526040902080546060919061064c90613639565b80601f016020809104026020016040519081016040528092919081815260200182805461067890613639565b80156106c55780601f1061069a576101008083540402835291602001916106c5565b820191906000526020600020905b8154815290600101906020018083116106a857829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106fb816112ba565b610707858585856112d7565b5050505050565b8051602080830191909120604080517f8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c9381019390935282018890526001600160a01b03871660608301526080820186905260a0820185905260c0820184905260e08201526000906107999061010001604051602081830303815290604052805190602001206114c8565b905060006107a7828a611531565b6001600160a01b03811660009081527ffb3afc54f817751654582ff74016652df45ddcd07c58eb7f7f8c2365d03ecadf602052604090205490915060ff166108575760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865207472616e73666572726572207369676e207472616e736660448201527f657220706173730000000000000000000000000000000000000000000000000060648201526084016105b8565b8342106108a65760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220706173732069732065787069726564000000000000000060448201526064016105b8565b60008881526008602052604090205460ff16156109055760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657220706173732077617320616c72656164792075736564000060448201526064016105b8565b6000868152600760205260408120805461091e90613639565b80601f016020809104026020016040519081016040528092919081815260200182805461094a90613639565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b505050505090508051600014156109c957600087815260076020908152604090912085516109c792870190612cee565b505b604080518a81526001600160a01b038a166020820152908101889052606081018790527fe202102ce42c14d1f73e60059def856f1b1bc2a387f48d1c61980befd84fe7029060800160405180910390a16000898152600860209081526040808320805460ff1916600117905580519182019052908152610a4e9089908990899061154d565b50505050505050505050565b6001600160a01b038516331480610a765750610a7685336104ea565b610ada5760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b6107078585858585611670565b600082815260036020526040902060010154610b02816112ba565b610b0c83836118f8565b505050565b6001600160a01b0381163314610b8f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016105b8565b61062b828261199a565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bc3816112ba565b610bcb611a1d565b50565b60608151835114610c475760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016105b8565b6000835167ffffffffffffffff811115610c7157634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c9a578160200160208202803683370190505b50905060005b8451811015610d3c57610d01858281518110610ccc57634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610cf457634e487b7160e01b600052603260045260246000fd5b602002602001015161053e565b828281518110610d2157634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610d35816136a1565b9050610ca0565b509392505050565b6001600160a01b038316331480610d605750610d6083336104ea565b610dc45760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b610b0c838383611a6f565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610df9816112ba565b6107078585858561154d565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e2f816112ba565b610bcb611ce2565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a610e61816112ba565b8151610b0c906006906020850190612cee565b61062b338383611d1f565b600082815260036020526040902060010154610e9a816112ba565b610b0c838361199a565b606060068054610eb390613639565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf90613639565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b5050505050905090565b6001600160a01b038516331480610f525750610f5285336104ea565b610fb65760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b6107078585858585611e14565b6001600160a01b038316331480610fdf5750610fdf83336104ea565b6110435760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b610b0c838383611fcd565b6060600061105d8360026135d7565b6110689060026135bf565b67ffffffffffffffff81111561108e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110b8576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110fd57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061115657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061117a8460026135d7565b6111859060016135bf565b90505b6001811115611226577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106111d457634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106111f857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361121f81613622565b9050611188565b5083156112755760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b8565b9392505050565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806105f257506105f28261215d565b610bcb81336121f8565b805161062b906002906020840190612cee565b6001600160a01b0384166113375760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016105b8565b81518351146113995760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b336113a981600087878787612278565b60005b8451811015611460578381815181106113d557634e487b7160e01b600052603260045260246000fd5b602002602001015160008087848151811061140057634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461144891906135bf565b90915550819050611458816136a1565b9150506113ac565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516114b192919061355a565b60405180910390a46107078160008787878761228e565b60006105f26114d5612443565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611540858561256d565b91509150610d3c816125dd565b6001600160a01b0384166115ad5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016105b8565b3360006115b9856127de565b905060006115c6856127de565b90506115d783600089858589612278565b6000868152602081815260408083206001600160a01b038b168452909152812080548792906116079084906135bf565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461166783600089898989612837565b50505050505050565b81518351146116d25760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b6001600160a01b0384166117365760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105b8565b33611745818787878787612278565b60005b845181101561188a57600085828151811061177357634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061179f57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156118325760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016105b8565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061186f9084906135bf565b9250508190555050505080611883906136a1565b9050611748565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118da92919061355a565b60405180910390a46118f081878787878761228e565b505050505050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff1661062b5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119563390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff161561062b5760008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611a25612942565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316611ad15760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016105b8565b8051825114611b335760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b6000339050611b5681856000868660405180602001604052806000815250612278565b60005b8351811015611c73576000848281518110611b8457634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110611bb057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038c168352909352919091205490915081811015611c3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016105b8565b6000928352602083815260408085206001600160a01b038b1686529091529092209103905580611c6b816136a1565b915050611b59565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611cc492919061355a565b60405180910390a46040805160208101909152600090525b50505050565b611cea612996565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a523390565b816001600160a01b0316836001600160a01b03161415611da75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016105b8565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611e785760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105b8565b336000611e84856127de565b90506000611e91856127de565b9050611ea1838989858589612278565b6000868152602081815260408083206001600160a01b038c16845290915290205485811015611f255760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016105b8565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611f629084906135bf565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611fc2848a8a8a8a8a612837565b505050505050505050565b6001600160a01b03831661202f5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016105b8565b33600061203b846127de565b90506000612048846127de565b905061206883876000858560405180602001604052806000815250612278565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156120e55760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016105b8565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052611667565b60006001600160e01b031982167fd9b67a260000000000000000000000000000000000000000000000000000000014806121c057506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806105f257507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146105f2565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff1661062b57612236816001600160a01b0316601461104e565b61224183602061104e565b604051602001612252929190613425565b60408051601f198184030181529082905262461bcd60e51b82526105b891600401613588565b612280612996565b6118f08686868686866129e9565b6001600160a01b0384163b156118f05760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906122d290899089908890889088906004016134a6565b602060405180830381600087803b1580156122ec57600080fd5b505af192505050801561231c575060408051601f3d908101601f19168201909252612319918101906132d0565b60015b6123d2576123286136e8565b806308c379a01415612362575061233d6136ff565b806123485750612364565b8060405162461bcd60e51b81526004016105b89190613588565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016105b8565b6001600160e01b0319811663bc197c8160e01b146116675760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016105b8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561249c57507f000000000000000000000000000000000000000000000000000000000000000046145b156124c657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b90565b6000808251604114156125a45760208301516040840151606085015160001a61259887828585612baf565b945094505050506125d6565b8251604014156125ce57602083015160408401516125c3868383612c9c565b9350935050506125d6565b506000905060025b9250929050565b60008160048111156125ff57634e487b7160e01b600052602160045260246000fd5b14156126085750565b600181600481111561262a57634e487b7160e01b600052602160045260246000fd5b14156126785760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105b8565b600281600481111561269a57634e487b7160e01b600052602160045260246000fd5b14156126e85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105b8565b600381600481111561270a57634e487b7160e01b600052602160045260246000fd5b14156127635760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105b8565b600481600481111561278557634e487b7160e01b600052602160045260246000fd5b1415610bcb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105b8565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061282657634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156118f05760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061287b9089908990889088908890600401613504565b602060405180830381600087803b15801561289557600080fd5b505af19250505080156128c5575060408051601f3d908101601f191682019092526128c2918101906132d0565b60015b6128d1576123286136e8565b6001600160e01b0319811663f23a6e6160e01b146116675760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016105b8565b60045460ff166129945760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016105b8565b565b60045460ff16156129945760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016105b8565b6001600160a01b038516612a8c5760005b8351811015612a8a57828181518110612a2357634e487b7160e01b600052603260045260246000fd5b602002602001015160056000868481518110612a4f57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612a7491906135bf565b90915550612a839050816136a1565b90506129fa565b505b6001600160a01b0384166118f05760005b8351811015611667576000848281518110612ac857634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110612af457634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006005600084815260200190815260200160002054905081811015612b8c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c7900000000000000000000000000000000000000000000000060648201526084016105b8565b60009283526005602052604090922091039055612ba8816136a1565b9050612a9d565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612be65750600090506003612c93565b8460ff16601b14158015612bfe57508460ff16601c14155b15612c0f5750600090506004612c93565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c63573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c8c57600060019250925050612c93565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681612cd260ff86901c601b6135bf565b9050612ce087828885612baf565b935093505050935093915050565b828054612cfa90613639565b90600052602060002090601f016020900481019282612d1c5760008555612d62565b82601f10612d3557805160ff1916838001178555612d62565b82800160010185558215612d62579182015b82811115612d62578251825591602001919060010190612d47565b50612d6e929150612d72565b5090565b5b80821115612d6e5760008155600101612d73565b80356001600160a01b0381168114612d9e57600080fd5b919050565b600082601f830112612db3578081fd5b81356020612dc08261359b565b604051612dcd8282613674565b8381528281019150858301600585901b87018401881015612dec578586fd5b855b85811015612e0a57813584529284019290840190600101612dee565b5090979650505050505050565b600082601f830112612e27578081fd5b813567ffffffffffffffff811115612e4157612e416136d2565b604051612e58601f8301601f191660200182613674565b818152846020838601011115612e6c578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215612e98578182fd5b612ea183612d87565b9150612eaf60208401612d87565b90509250929050565b600080600080600060a08688031215612ecf578081fd5b612ed886612d87565b9450612ee660208701612d87565b9350604086013567ffffffffffffffff80821115612f02578283fd5b612f0e89838a01612da3565b94506060880135915080821115612f23578283fd5b612f2f89838a01612da3565b93506080880135915080821115612f44578283fd5b50612f5188828901612e17565b9150509295509295909350565b600080600080600060a08688031215612f75578081fd5b612f7e86612d87565b9450612f8c60208701612d87565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fb5578182fd5b612f5188828901612e17565b600080600060608486031215612fd5578283fd5b612fde84612d87565b9250602084013567ffffffffffffffff80821115612ffa578384fd5b61300687838801612da3565b9350604086013591508082111561301b578283fd5b5061302886828701612da3565b9150509250925092565b60008060008060808587031215613047578384fd5b61305085612d87565b9350602085013567ffffffffffffffff8082111561306c578485fd5b61307888838901612da3565b9450604087013591508082111561308d578384fd5b61309988838901612da3565b935060608701359150808211156130ae578283fd5b506130bb87828801612e17565b91505092959194509250565b600080604083850312156130d9578182fd5b6130e283612d87565b9150602083013580151581146130f6578182fd5b809150509250929050565b60008060408385031215613113578182fd5b61311c83612d87565b946020939093013593505050565b60008060006060848603121561313e578081fd5b61314784612d87565b95602085013595506040909401359392505050565b60008060008060808587031215613171578182fd5b61317a85612d87565b93506020850135925060408501359150606085013567ffffffffffffffff8111156131a3578182fd5b6130bb87828801612e17565b600080604083850312156131c1578182fd5b823567ffffffffffffffff808211156131d8578384fd5b818501915085601f8301126131eb578384fd5b813560206131f88261359b565b6040516132058282613674565b8381528281019150858301600585901b870184018b1015613224578889fd5b8896505b8487101561324d5761323981612d87565b835260019690960195918301918301613228565b5096505086013592505080821115613263578283fd5b5061327085828601612da3565b9150509250929050565b60006020828403121561328b578081fd5b5035919050565b600080604083850312156132a4578182fd5b82359150612eaf60208401612d87565b6000602082840312156132c5578081fd5b813561127581613789565b6000602082840312156132e1578081fd5b815161127581613789565b600080600080600080600060e0888a031215613306578485fd5b873567ffffffffffffffff8082111561331d578687fd5b6133298b838c01612e17565b985060208a0135975061333e60408b01612d87565b965060608a0135955060808a0135945060a08a0135935060c08a0135915080821115613368578283fd5b506133758a828b01612e17565b91505092959891949750929550565b600060208284031215613395578081fd5b813567ffffffffffffffff8111156133ab578182fd5b6133b784828501612e17565b949350505050565b6000815180845260208085019450808401835b838110156133ee578151875295820195908201906001016133d2565b509495945050505050565b600081518084526134118160208601602086016135f6565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161345d8160178501602088016135f6565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161349a8160288401602088016135f6565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a060408301526134d260a08301866133bf565b82810360608401526134e481866133bf565b905082810360808401526134f881856133f9565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261353c60a08301846133f9565b979650505050505050565b60208152600061127560208301846133bf565b60408152600061356d60408301856133bf565b828103602084015261357f81856133bf565b95945050505050565b60208152600061127560208301846133f9565b600067ffffffffffffffff8211156135b5576135b56136d2565b5060051b60200190565b600082198211156135d2576135d26136bc565b500190565b60008160001904831182151516156135f1576135f16136bc565b500290565b60005b838110156136115781810151838201526020016135f9565b83811115611cdc5750506000910152565b600081613631576136316136bc565b506000190190565b600181811c9082168061364d57607f821691505b6020821081141561366e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561369a5761369a6136d2565b6040525050565b60006000198214156136b5576136b56136bc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d111561256a57600481823e5160e01c90565b600060443d101561370d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561373d57505050505090565b82850191508151818111156137555750505050505090565b843d870101602082850101111561376f5750505050505090565b61377e60208286010187613674565b509095945050505050565b6001600160e01b031981168114610bcb57600080fdfea2646970667358221220481ed7f4a9df1abb5d262b42f8ffeb5f0d8c47ee2d8442ef924b1219e30f143864736f6c63430008040033",
              "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x413D CODESIZE SUB DUP1 PUSH3 0x413D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C6971756964697465616D4E66745472616E7366657250617373000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH3 0xA6 DUP2 PUSH3 0x244 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD DUP4 DUP4 ADD KECCAK256 PUSH1 0xE0 DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 SWAP1 MSTORE CHAINID PUSH1 0xA0 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP9 ADD DUP2 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS DUP2 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP4 ADD DUP4 MSTORE PUSH1 0xC0 ADD SWAP1 MSTORE DUP1 MLOAD SWAP5 ADD SWAP4 SWAP1 SWAP4 KECCAK256 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x80 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0xC0 MSTORE PUSH2 0x120 MSTORE POP PUSH3 0x155 SWAP3 POP PUSH1 0x0 SWAP2 POP CALLER SWAP1 POP PUSH3 0x25D JUMP JUMPDEST PUSH3 0x181 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C CALLER PUSH3 0x25D JUMP JUMPDEST PUSH3 0x1AD PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A CALLER PUSH3 0x25D JUMP JUMPDEST PUSH3 0x1D9 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A CALLER PUSH3 0x25D JUMP JUMPDEST PUSH3 0x205 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH3 0x25D JUMP JUMPDEST PUSH3 0x231 PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP4 PUSH3 0x25D JUMP JUMPDEST PUSH3 0x23C DUP2 PUSH3 0x301 JUMP JUMPDEST POP POP PUSH3 0x915 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x259 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x5F8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH3 0x259 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 PUSH3 0x2BD 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 PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH3 0x32D DUP2 PUSH3 0x347 JUMP JUMPDEST DUP2 MLOAD PUSH3 0x342 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x5F8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0x353 DUP2 CALLER PUSH3 0x356 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH3 0x259 JUMPI PUSH3 0x3A2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH3 0x3FC PUSH1 0x20 SHL PUSH3 0x104E OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x3B8 DUP4 PUSH1 0x20 PUSH3 0x104E PUSH3 0x3FC DUP3 SHL OR DUP2 SHR JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x3CB SWAP3 SWAP2 SWAP1 PUSH3 0x774 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH3 0x3F3 SWAP2 PUSH1 0x4 ADD PUSH3 0x7ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x40D DUP4 PUSH1 0x2 PUSH3 0x83D JUMP JUMPDEST PUSH3 0x41A SWAP1 PUSH1 0x2 PUSH3 0x822 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x440 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x46B 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 PUSH3 0x495 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x4D3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x4F9 DUP5 PUSH1 0x2 PUSH3 0x83D JUMP JUMPDEST PUSH3 0x506 SWAP1 PUSH1 0x1 PUSH3 0x822 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH3 0x5A0 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH3 0x54A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x598 DUP2 PUSH3 0x892 JUMP JUMPDEST SWAP1 POP PUSH3 0x509 JUMP JUMPDEST POP DUP4 ISZERO PUSH3 0x5F1 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 PUSH3 0x3F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x606 SWAP1 PUSH3 0x8AC JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x62A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x675 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x645 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x675 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x675 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x675 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x658 JUMP JUMPDEST POP PUSH3 0x683 SWAP3 SWAP2 POP PUSH3 0x687 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x683 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x688 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x6B1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6C8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x6E5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x6F9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x70E JUMPI PUSH3 0x70E PUSH3 0x8FF 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 PUSH3 0x739 JUMPI PUSH3 0x739 PUSH3 0x8FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x752 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH3 0x765 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x85F JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH3 0x7AE DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x85F JUMP JUMPDEST PUSH17 0x1034B99036B4B9B9B4B733903937B6329 PUSH1 0x7D SHL PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH3 0x7E1 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x85F JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x80E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x85F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x838 JUMPI PUSH3 0x838 PUSH3 0x8E9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x85A JUMPI PUSH3 0x85A PUSH3 0x8E9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x87C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x862 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x88C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH3 0x8A4 JUMPI PUSH3 0x8A4 PUSH3 0x8E9 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x8C1 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x8E3 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 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x37D5 PUSH3 0x968 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x24CD ADD MSTORE PUSH1 0x0 PUSH2 0x251C ADD MSTORE PUSH1 0x0 PUSH2 0x24F7 ADD MSTORE PUSH1 0x0 PUSH2 0x2450 ADD MSTORE PUSH1 0x0 PUSH2 0x247A ADD MSTORE PUSH1 0x0 PUSH2 0x24A4 ADD MSTORE PUSH2 0x37D5 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 0x1EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B20C454 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B20C454 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x7F345710 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x63AC5D97 EQ PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x121DF247 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x121DF247 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x23A45C61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2FE5305 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x207 PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0x3101 JUMP JUMPDEST PUSH2 0x53E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x211 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x3384 JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST PUSH2 0x207 PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3032 JUMP JUMPDEST PUSH2 0x6D1 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x207 PUSH2 0x2CD CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EB8 JUMP JUMPDEST PUSH2 0xA5A JUMP JUMPDEST PUSH2 0x250 PUSH2 0x303 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x250 PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x31AF JUMP JUMPDEST PUSH2 0xBCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x3547 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x351 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x22D JUMP JUMPDEST PUSH2 0x207 PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH2 0xD44 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x315C JUMP JUMPDEST PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x207 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x3FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 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 PUSH2 0x250 PUSH2 0x433 CALLDATASIZE PUSH1 0x4 PUSH2 0x3384 JUMP JUMPDEST PUSH2 0xE37 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0x30C7 JUMP JUMPDEST PUSH2 0xE74 JUMP JUMPDEST PUSH2 0x207 PUSH2 0x461 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x207 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xE7F JUMP JUMPDEST PUSH2 0x207 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A DUP2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0xEA4 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2E86 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x250 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F5E JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x312A JUMP JUMPDEST PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F2 DUP3 PUSH2 0x127C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C PUSH2 0x622 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x62B DUP3 PUSH2 0x12C4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x64C SWAP1 PUSH2 0x3639 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 0x678 SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x69A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6C5 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 0x6A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x6FB DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 PUSH2 0x12D7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8A73F441CCFC90803A814E1B8136A6B47F18AEC294550D26966593EE7EF0E03C SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x799 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x14C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7A7 DUP3 DUP11 PUSH2 0x1531 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xFB3AFC54F817751654582FF74016652DF45DDCD07C58EB7F7F8C2365D03ECADF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x857 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865207472616E73666572726572207369676E207472616E7366 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572207061737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x8A6 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 0x5472616E73666572207061737320697320657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220706173732077617320616C726561647920757365640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x91E SWAP1 PUSH2 0x3639 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 0x94A SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x997 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x997 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 0x97A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP6 MLOAD PUSH2 0x9C7 SWAP3 DUP8 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP11 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH32 0xE202102CE42C14D1F73E60059DEF856F1B1BC2A387F48D1C61980BEFD84FE702 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH2 0xA4E SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x154D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xA76 JUMPI POP PUSH2 0xA76 DUP6 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xADA 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1670 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xB02 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 PUSH2 0x18F8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB8F 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 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x62B DUP3 DUP3 PUSH2 0x199A JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xBC3 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xBCB PUSH2 0x1A1D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xC47 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC71 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC9A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD3C JUMPI PUSH2 0xD01 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCCC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x53E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD21 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0xD35 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0xCA0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0xD60 JUMPI POP PUSH2 0xD60 DUP4 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xDC4 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 DUP4 PUSH2 0x1A6F JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xDF9 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 PUSH2 0x154D JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xE2F DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xBCB PUSH2 0x1CE2 JUMP JUMPDEST PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH2 0xE61 DUP2 PUSH2 0x12BA JUMP JUMPDEST DUP2 MLOAD PUSH2 0xB0C SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST PUSH2 0x62B CALLER DUP4 DUP4 PUSH2 0x1D1F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xE9A DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 PUSH2 0x199A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0xEB3 SWAP1 PUSH2 0x3639 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 0xEDF SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF2C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF01 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF2C 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 0xF0F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xF52 JUMPI POP PUSH2 0xF52 DUP6 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xFB6 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1E14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0xFDF JUMPI POP PUSH2 0xFDF DUP4 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x1043 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 DUP4 PUSH2 0x1FCD JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x105D DUP4 PUSH1 0x2 PUSH2 0x35D7 JUMP JUMPDEST PUSH2 0x1068 SWAP1 PUSH1 0x2 PUSH2 0x35BF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x108E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x10B8 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x10FD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1156 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x117A DUP5 PUSH1 0x2 PUSH2 0x35D7 JUMP JUMPDEST PUSH2 0x1185 SWAP1 PUSH1 0x1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1226 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x11D4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11F8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x121F DUP2 PUSH2 0x3622 JUMP JUMPDEST SWAP1 POP PUSH2 0x1188 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x1275 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 0x5B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x5F2 JUMPI POP PUSH2 0x5F2 DUP3 PUSH2 0x215D JUMP JUMPDEST PUSH2 0xBCB DUP2 CALLER PUSH2 0x21F8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x62B SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1337 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1399 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH2 0x13A9 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1460 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x13D5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1400 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1448 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 SWAP1 POP PUSH2 0x1458 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x13AC JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x14B1 SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x707 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F2 PUSH2 0x14D5 PUSH2 0x2443 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1540 DUP6 DUP6 PUSH2 0x256D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xD3C DUP2 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15AD 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x15B9 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15C6 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x15D7 DUP4 PUSH1 0x0 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x1607 SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1667 DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2837 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x16D2 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1736 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH2 0x1745 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x188A JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1773 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x179F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x186F SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x1883 SWAP1 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1748 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x18DA SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x18F0 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x228E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH2 0x62B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 0x1956 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 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1A25 PUSH2 0x2942 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER 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 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AD1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1B33 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1B56 DUP2 DUP6 PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1C73 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B84 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BB0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1C3C 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH2 0x1C6B DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1B59 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1CC4 SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1CEA PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1A52 CALLER SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1DA7 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1E78 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1E84 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E91 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x1EA1 DUP4 DUP10 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x1F25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x1F62 SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1FC2 DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2837 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x202F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x203B DUP5 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2048 DUP5 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x2068 DUP4 DUP8 PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x20E5 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x1667 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x21C0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x5F2 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH2 0x62B JUMPI PUSH2 0x2236 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0x104E JUMP JUMPDEST PUSH2 0x2241 DUP4 PUSH1 0x20 PUSH2 0x104E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2252 SWAP3 SWAP2 SWAP1 PUSH2 0x3425 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x5B8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3588 JUMP JUMPDEST PUSH2 0x2280 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x18F0 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x22D2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x34A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x231C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2319 SWAP2 DUP2 ADD SWAP1 PUSH2 0x32D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x23D2 JUMPI PUSH2 0x2328 PUSH2 0x36E8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x2362 JUMPI POP PUSH2 0x233D PUSH2 0x36FF JUMP JUMPDEST DUP1 PUSH2 0x2348 JUMPI POP PUSH2 0x2364 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5B8 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1667 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x249C JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x24C6 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2598 DUP8 DUP3 DUP6 DUP6 PUSH2 0x2BAF JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x25D6 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x25CE JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x25C3 DUP7 DUP4 DUP4 PUSH2 0x2C9C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0x25D6 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 PUSH2 0x25FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2608 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x262A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2678 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 0x5B8 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x269A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x26E8 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 0x5B8 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x270A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2763 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 0x5B8 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2785 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0xBCB 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 0x5B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2826 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x287B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3504 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28C5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x28C2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x32D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28D1 JUMPI PUSH2 0x2328 PUSH2 0x36E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1667 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x2994 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2994 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 PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2A8C JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A8A JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A23 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2A4F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2A74 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2A83 SWAP1 POP DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x29FA JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x18F0 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1667 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2AC8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2AF4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x2B8C 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 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH2 0x2BA8 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2BE6 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x2C93 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2BFE JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2C0F JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x2C93 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 0x2C63 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 0x2C8C JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x2C93 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 PUSH2 0x2CD2 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x35BF JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE0 DUP8 DUP3 DUP9 DUP6 PUSH2 0x2BAF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2CFA SWAP1 PUSH2 0x3639 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2D1C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2D62 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2D35 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2D62 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2D62 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2D62 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2D47 JUMP JUMPDEST POP PUSH2 0x2D6E SWAP3 SWAP2 POP PUSH2 0x2D72 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2D6E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D73 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DB3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x2DC0 DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DCD DUP3 DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x2DEC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E0A JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2DEE JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E27 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E41 JUMPI PUSH2 0x2E41 PUSH2 0x36D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E58 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2E6C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E98 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2EA1 DUP4 PUSH2 0x2D87 JUMP JUMPDEST SWAP2 POP PUSH2 0x2EAF PUSH1 0x20 DUP5 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2ECF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2ED8 DUP7 PUSH2 0x2D87 JUMP JUMPDEST SWAP5 POP PUSH2 0x2EE6 PUSH1 0x20 DUP8 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2F02 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2F0E DUP10 DUP4 DUP11 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2F23 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2F2F DUP10 DUP4 DUP11 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2F44 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2F51 DUP9 DUP3 DUP10 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2F75 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2F7E DUP7 PUSH2 0x2D87 JUMP JUMPDEST SWAP5 POP PUSH2 0x2F8C PUSH1 0x20 DUP8 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2F51 DUP9 DUP3 DUP10 ADD PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FD5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2FDE DUP5 PUSH2 0x2D87 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FFA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3006 DUP8 DUP4 DUP9 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x301B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3028 DUP7 DUP3 DUP8 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3047 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3050 DUP6 PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x306C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3078 DUP9 DUP4 DUP10 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x308D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3099 DUP9 DUP4 DUP10 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30AE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30BB DUP8 DUP3 DUP9 ADD PUSH2 0x2E17 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 0x30D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30E2 DUP4 PUSH2 0x2D87 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x30F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3113 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x311C DUP4 PUSH2 0x2D87 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 0x313E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3147 DUP5 PUSH2 0x2D87 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3171 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x317A DUP6 PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30BB DUP8 DUP3 DUP9 ADD PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x31C1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31D8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x31EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x31F8 DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3205 DUP3 DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x3224 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x324D JUMPI PUSH2 0x3239 DUP2 PUSH2 0x2D87 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x3228 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3263 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3270 DUP6 DUP3 DUP7 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x328B JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32A4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2EAF PUSH1 0x20 DUP5 ADD PUSH2 0x2D87 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1275 DUP2 PUSH2 0x3789 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32E1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1275 DUP2 PUSH2 0x3789 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3306 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x331D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x3329 DUP12 DUP4 DUP13 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x333E PUSH1 0x40 DUP12 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3368 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3375 DUP11 DUP3 DUP12 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3395 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x33B7 DUP5 DUP3 DUP6 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x33EE JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x33D2 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3411 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x35F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x345D DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x35F6 JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x349A DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x35F6 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x34D2 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x33BF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x34E4 DUP2 DUP7 PUSH2 0x33BF JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x34F8 DUP2 DUP6 PUSH2 0x33F9 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x353C PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x33F9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1275 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x33BF JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x356D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x33BF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x357F DUP2 DUP6 PUSH2 0x33BF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1275 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x33F9 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x35B5 JUMPI PUSH2 0x35B5 PUSH2 0x36D2 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x35D2 JUMPI PUSH2 0x35D2 PUSH2 0x36BC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x35F1 JUMPI PUSH2 0x35F1 PUSH2 0x36BC JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1CDC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3631 JUMPI PUSH2 0x3631 PUSH2 0x36BC JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x364D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x366E 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x369A JUMPI PUSH2 0x369A PUSH2 0x36D2 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x36B5 JUMPI PUSH2 0x36B5 PUSH2 0x36BC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x256A JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x370D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x373D JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3755 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x376F JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x377E PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x3674 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 0x1E 0xD7 DELEGATECALL 0xA9 0xDF BYTE 0xBB 0x5D 0x26 0x2B TIMESTAMP 0xF8 SELFDESTRUCT 0xEB 0x5F 0xD DUP13 SELFBALANCE 0xEE 0x2D DUP5 TIMESTAMP 0xEF SWAP3 0x4B SLT NOT 0xE3 0xF EQ CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "529:3877:18:-:0;;;1230:435;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2455:602:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2455:602:15;;;1107:62:4;;;;;;;;;;;;1149:13;1157:4;1149:7;;;:13;;:::i;:::-;-1:-1:-1;996:7:3;:15;;-1:-1:-1;;996:15:3;;;2541:22:15;;;;;;;;;;2597:25;;;;;;2778;;;;996:15:3;2813:31:15;;;2873:13;2854:32;;;;-1:-1:-1;3633:73:15;;2651:117;3633:73;;;2170:25:20;;;2211:18;;;2204:34;;;-1:-1:-1;2254:18:20;;2247:34;;;2297:18;;;2290:34;;;;3700:4:15;2340:19:20;;;2333:61;3633:73:15;;;;;;;;;;2142:19:20;;3633:73:15;;3623:84;;;;;;;;2541:22;;2597:25;;2896:85;;3014:4;2991:28;;;;3029:21;;-1:-1:-1;1353:42:18::2;::::0;-1:-1:-1;2072:4:0::2;::::0;-1:-1:-1;1384:10:18::2;::::0;-1:-1:-1;1353:10:18::2;:42::i;:::-;1401:39;675:28;1429:10;1401;:39::i;:::-;1446:48;758:37;1483:10;1446;:48::i;:::-;1500:35;837:24;1524:10;1500;:35::i;:::-;1541;903:24;1565:10;1541;:35::i;:::-;1582:41;974:29;1611:11:::0;1582:10:::2;:41::i;:::-;1630:30;1645:14:::0;1630::::2;:30::i;:::-;1230:435:::0;;529:3877;;8173:86:4;8239:13;;;;:4;;:13;;;;;:::i;:::-;;8173:86;:::o;7474:233:0:-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7552:149;;7595:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7595:29:0;;;;;;;;;:36;;-1:-1:-1;;7595:36:0;7627:4;7595:36;;;7677:12;719:10:12;;640:96;7677:12:0;-1:-1:-1;;;;;7650:40:0;7668:7;-1:-1:-1;;;;;7650:40:0;7662:4;7650:40;;;;;;;;;;7474:233;;:::o;1986:120:18:-;758:37;2505:16:0;758:37:18;2505:10:0;:16::i;:::-;2080:21:18;;::::1;::::0;:12:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1986:120:::0;;:::o;3334:103:0:-;3400:30;3411:4;719:10:12;3400::0;:30::i;:::-;3334:103;:::o;3718:492::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;3801:403;;3989:41;4017:7;-1:-1:-1;;;;;3989:41:0;4027:2;3989:19;;;;;:41;;:::i;:::-;4101:38;4129:4;4136:2;4101:19;;;;;:38;;:::i;:::-;3896:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:265:0;;;;;;;;;;-1:-1:-1;;;3844:349:0;;;;;;;:::i;:::-;;;;;;;;1652:441:13;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;-1:-1:-1;;;;;1774:25:13;;;;;-1:-1:-1;;;1774:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:13;;1752:47;;-1:-1:-1;;;1809:6:13;1816:1;1809:9;;;;;;-1:-1:-1;;;1809:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1809:15:13;;;;;;;;;-1:-1:-1;;;1834:6:13;1841:1;1834:9;;;;;;-1:-1:-1;;;1834:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1834:15:13;;;;;;;;-1:-1:-1;1864:9:13;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:13;1951:3;1943:11;1930:25;;;;;-1:-1:-1;;;1930:25:13;;;;;;;;;;;;1918:6;1925:1;1918:9;;;;;;-1:-1:-1;;;1918:9:13;;;;;;;;;;;;:37;-1:-1:-1;;;;;1918:37:13;;;;;;;;-1:-1:-1;1979:1:13;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:13;;2000:55;;;;-1:-1:-1;;;2000:55:13;;2995:2:20;2000:55:13;;;2977:21:20;;;3014:18;;;3007:30;3073:34;3053:18;;;3046:62;3125:18;;2000:55:13;2967:182:20;2000:55:13;2079:6;1652:441;-1:-1:-1;;;1652:441:13:o;529:3877:18:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;529:3877:18;;;-1:-1:-1;529:3877:18;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:1101:20;103:6;111;164:2;152:9;143:7;139:23;135:32;132:2;;;185:6;177;170:22;132:2;216:16;;-1:-1:-1;;;;;261:31:20;;251:42;;241:2;;312:6;304;297:22;241:2;389;374:18;;368:25;340:5;;-1:-1:-1;;;;;;442:14:20;;;439:2;;;474:6;466;459:22;439:2;517:6;506:9;502:22;492:32;;562:7;555:4;551:2;547:13;543:27;533:2;;589:6;581;574:22;533:2;623;617:9;645:2;641;638:10;635:2;;;651:18;;:::i;:::-;726:2;720:9;694:2;780:13;;-1:-1:-1;;776:22:20;;;800:2;772:31;768:40;756:53;;;824:18;;;844:22;;;821:46;818:2;;;870:18;;:::i;:::-;910:10;906:2;899:22;945:2;937:6;930:18;985:7;980:2;975;971;967:11;963:20;960:33;957:2;;;1011:6;1003;996:22;957:2;1029:55;1081:2;1076;1068:6;1064:15;1059:2;1055;1051:11;1029:55;:::i;:::-;1103:6;1093:16;;;;;;;122:993;;;;;:::o;1120:786::-;1531:25;1526:3;1519:38;1501:3;1586:6;1580:13;1602:62;1657:6;1652:2;1647:3;1643:12;1636:4;1628:6;1624:17;1602:62;:::i;:::-;-1:-1:-1;;;1723:2:20;1683:16;;;1715:11;;;1708:40;1773:13;;1795:63;1773:13;1844:2;1836:11;;1829:4;1817:17;;1795:63;:::i;:::-;1878:17;1897:2;1874:26;;1509:397;-1:-1:-1;;;;1509:397:20:o;2405:383::-;2554:2;2543:9;2536:21;2517:4;2586:6;2580:13;2629:6;2624:2;2613:9;2609:18;2602:34;2645:66;2704:6;2699:2;2688:9;2684:18;2679:2;2671:6;2667:15;2645:66;:::i;:::-;2772:2;2751:15;-1:-1:-1;;2747:29:20;2732:45;;;;2779:2;2728:54;;2526:262;-1:-1:-1;;2526:262:20:o;3154:128::-;3194:3;3225:1;3221:6;3218:1;3215:13;3212:2;;;3231:18;;:::i;:::-;-1:-1:-1;3267:9:20;;3202:80::o;3287:168::-;3327:7;3393:1;3389;3385:6;3381:14;3378:1;3375:21;3370:1;3363:9;3356:17;3352:45;3349:2;;;3400:18;;:::i;:::-;-1:-1:-1;3440:9:20;;3339:116::o;3460:258::-;3532:1;3542:113;3556:6;3553:1;3550:13;3542:113;;;3632:11;;;3626:18;3613:11;;;3606:39;3578:2;3571:10;3542:113;;;3673:6;3670:1;3667:13;3664:2;;;3708:1;3699:6;3694:3;3690:16;3683:27;3664:2;;3513:205;;;:::o;3723:136::-;3762:3;3790:5;3780:2;;3799:18;;:::i;:::-;-1:-1:-1;;;3835:18:20;;3770:89::o;3864:380::-;3943:1;3939:12;;;;3986;;;4007:2;;4061:4;4053:6;4049:17;4039:27;;4007:2;4114;4106:6;4103:14;4083:18;4080:38;4077:2;;;4160:10;4155:3;4151:20;4148:1;4141:31;4195:4;4192:1;4185:15;4223:4;4220:1;4213:15;4077:2;;3919:325;;;:::o;4249:127::-;4310:10;4305:3;4301:20;4298:1;4291:31;4341:4;4338:1;4331:15;4365:4;4362:1;4355:15;4381:127;4442:10;4437:3;4433:20;4430:1;4423:31;4473:4;4470:1;4463:15;4497:4;4494:1;4487:15;4413:95;529:3877:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:30335:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:20",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:20"
                              },
                              "nodeType": "YulIf",
                              "src": "111:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:20",
                            "type": ""
                          }
                        ],
                        "src": "14:196:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "279:691:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "328:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "337:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "344:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "330:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "330:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "307:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "315:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "303:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "303:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "322:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "299:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "299:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "292:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "292:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "289:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "361:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "384:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "371:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "371:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "365:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "410:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "404:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "423:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "473:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "433:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "427:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "485:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "505:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "499:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "499:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "489:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "537:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "517:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "517:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "557:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "568:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "561:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "590:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "598:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "583:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "583:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "610:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "621:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "610:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "641:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "656:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "664:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "652:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "652:15:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "645:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "721:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "730:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "737:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "723:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "723:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "723:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "690:6:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "702:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "705:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "698:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "698:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "686:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "686:23:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "711:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "682:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "682:32:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "716:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "676:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "754:14:20",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "763:5:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "758:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "822:118:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "843:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "861:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "848:12:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "848:17:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "836:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "836:30:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "836:30:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "879:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "895:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "886:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "911:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "922:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "927:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "918:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "911:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "788:1:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "791:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "785:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "785:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "795:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "797:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "809:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "802:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "802:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "797:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "781:3:20",
                                "statements": []
                              },
                              "src": "777:163:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "949:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "958:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "253:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "261:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "269:5:20",
                            "type": ""
                          }
                        ],
                        "src": "215:755:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1027:523:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1076:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1085:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1092:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1078:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1078:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1078:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1055:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1063:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1051:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1051:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1047:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1047:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1040:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1037:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1109:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1132:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1119:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1119:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1113:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1178:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1180:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1180:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1180:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1154:2:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1158:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1151:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1151:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1148:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1209:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1229:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1223:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1223:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1213:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1261:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1281:2:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1285:4:20",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1277:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1277:13:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1296:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1292:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1292:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1273:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1273:27:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1302:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1269:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1269:38:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "1241:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1241:67:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1241:67:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1324:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1317:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1383:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1392:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1399:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1385:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1385:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1358:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1366:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1354:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1354:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1371:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1350:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1350:26:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1378:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1347:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1344:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1433:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1441:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1429:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1429:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1452:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1460:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1448:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1448:17:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1467:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1416:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1416:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1416:54:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1494:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1502:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1490:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1490:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1507:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1486:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1486:26:20"
                                  },
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1514:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1479:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1479:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1479:41:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1529:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1538:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1001:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1009:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1017:5:20",
                            "type": ""
                          }
                        ],
                        "src": "975:575:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1642:183:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1688:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1697:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1705:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1690:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1690:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1690:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1663:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1672:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1659:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1659:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1684:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1655:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1655:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1652:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1723:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1752:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1733:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1733:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1723:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1771:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1804:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1815:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1800:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1800:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1781:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1781:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1771:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1600:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1611:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1623:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1631:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1555:270:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2027:786:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2074:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2083:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2091:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2076:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2076:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2076:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2057:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2044:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2044:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2069:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2040:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2040:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2037:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2109:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2138:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2119:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2119:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2109:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2157:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2190:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2201:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2186:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2186:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2167:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2167:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2157:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2214:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2245:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2256:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2241:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2241:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2218:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2269:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2279:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2273:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2324:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2333:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2341:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2326:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2326:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2326:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2312:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2320:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2309:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2306:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2359:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2402:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2413:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2398:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2398:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2422:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2369:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2369:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2359:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2439:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2472:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2483:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2468:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2468:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2455:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2455:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2443:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2516:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2525:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2533:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2518:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2518:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2518:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2502:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2512:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2499:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2499:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2496:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2551:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2605:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2590:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2590:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2616:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2561:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2561:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2551:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2633:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2666:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2677:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2662:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2662:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2649:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2649:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2637:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2711:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2720:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2728:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2713:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2713:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2713:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2697:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2707:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2694:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2694:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2691:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2746:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2777:9:20"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2788:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2773:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2773:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2799:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2746:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1961:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1972:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1984:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1992:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2000:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2008:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2016:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1830:983:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2965:479:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3012:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3021:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3029:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3014:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3014:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3014:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2986:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2995:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2982:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2982:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3007:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2978:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2978:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2975:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3047:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3076:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3057:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3057:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3047:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3095:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3139:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3124:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3124:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3105:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3105:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3095:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3152:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3179:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3190:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3175:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3175:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3203:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3230:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3241:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3226:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3226:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3213:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3213:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3254:47:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3285:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3296:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3281:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3281:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3268:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3268:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3258:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3344:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3353:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3361:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3346:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3346:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3346:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3316:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3324:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3313:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3313:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3310:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3379:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3421:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3406:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3406:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3430:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3389:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3389:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3379:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2899:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2910:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2922:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2930:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2938:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2946:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2954:6:20",
                            "type": ""
                          }
                        ],
                        "src": "2818:626:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3603:545:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3649:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3658:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3666:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3651:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3651:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3651:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3624:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3633:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3620:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3620:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3645:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3616:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3616:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3613:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3684:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3713:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3694:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3694:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3684:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3732:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3763:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3774:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3759:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3759:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3746:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3746:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3736:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3787:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3797:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3791:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3842:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3851:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3859:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3844:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3844:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3844:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3830:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3838:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3827:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3824:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3877:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3920:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3931:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3916:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3916:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3940:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3887:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3887:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3877:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3957:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3990:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4001:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3986:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3986:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3973:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3973:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3961:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4034:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4043:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4051:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4036:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4036:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4036:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4020:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4030:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4017:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4017:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4014:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4069:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4112:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4123:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4108:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4108:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4134:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4079:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4079:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4069:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3553:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3564:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3576:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3584:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3592:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3449:699:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4333:728:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4380:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4389:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4397:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4382:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4382:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4382:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4354:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4363:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4350:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4350:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4375:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4346:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4346:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4343:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4415:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4444:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4425:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4425:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4415:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4463:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4494:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4505:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4490:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4490:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4477:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4477:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4467:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4518:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4528:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4522:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4573:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4582:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4590:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4575:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4575:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4575:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4561:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4569:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4558:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4558:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4555:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4608:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4651:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4662:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4647:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4647:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4671:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4618:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4618:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4608:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4688:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4721:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4732:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4717:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4717:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4704:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4704:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4692:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4765:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4774:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4782:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4767:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4767:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4767:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4751:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4761:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4748:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4748:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4745:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4800:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4810:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4810:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4800:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4882:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4915:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4926:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4911:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4911:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4898:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4898:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4886:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4968:6:20"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4976:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4961:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4961:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4955:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4942:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4942:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4939:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4994:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5025:9:20"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5036:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5021:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5021:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5047:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4275:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4286:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4298:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4306:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4314:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4322:6:20",
                            "type": ""
                          }
                        ],
                        "src": "4153:908:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5150:283:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5196:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5205:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5213:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5198:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5198:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5198:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5171:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5180:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5167:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5167:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5192:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5163:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5163:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5160:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5231:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5260:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5231:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5279:45:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5309:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5320:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5305:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5305:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5292:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5292:32:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5283:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5377:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5386:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5394:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5379:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5379:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5379:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5346:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5367:5:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5360:6:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5360:13:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5353:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5353:21:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5343:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5343:32:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5336:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5336:40:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5333:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5412:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5422:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5412:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5108:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5119:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5131:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5139:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5066:367:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5525:177:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5571:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5580:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5588:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5573:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5573:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5573:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5546:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5555:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5542:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5542:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5567:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5538:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5538:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5535:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5606:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5635:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5616:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5616:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5606:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5654:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5681:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5692:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5677:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5677:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5664:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5664:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5654:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5483:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5494:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5506:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5514:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5438:264:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5811:228:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5857:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "5866:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "5874:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5859:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5859:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5859:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5832:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5841:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5828:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5828:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5853:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5824:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5824:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5821:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5892:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5921:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5902:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5902:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5892:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5940:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5967:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5978:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5963:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5963:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5950:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5950:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5940:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5991:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6018:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6029:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6014:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6014:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6001:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6001:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5991:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5761:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5772:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5784:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5792:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5800:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5707:332:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6174:421:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6221:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6230:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6238:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6223:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6223:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6223:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6195:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6204:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6191:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6191:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6216:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6187:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6187:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6184:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6256:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6285:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6266:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6266:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6256:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6304:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6331:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6342:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6327:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6327:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6314:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6304:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6355:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6382:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6393:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6378:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6378:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6365:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6355:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6406:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6437:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6448:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6433:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6433:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6420:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6420:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6410:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6495:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6504:6:20"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6512:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6497:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6497:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6497:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6467:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6475:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6464:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6464:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6461:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6530:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6561:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6572:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6557:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6557:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6581:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6540:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6530:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6116:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6127:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6139:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6147:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6155:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6163:6:20",
                            "type": ""
                          }
                        ],
                        "src": "6044:551:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6737:1137:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6792:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6800:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6758:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6767:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6754:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6754:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6779:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6750:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6750:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6747:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6818:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6845:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6832:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6832:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6822:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6864:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6874:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6868:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6919:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6928:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6936:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6921:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6921:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6921:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6907:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6915:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6904:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6904:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6901:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6954:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6968:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6979:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6964:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6964:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6958:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7034:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7043:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7051:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7036:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7036:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7013:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7017:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7009:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7009:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7024:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7005:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7005:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6998:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6998:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6995:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7069:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7092:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7079:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7079:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7073:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7104:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7114:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7108:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7127:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7177:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7137:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7137:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "7131:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7189:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7209:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7203:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7203:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7193:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:6:20"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "7249:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "7221:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7221:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7221:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7261:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7272:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7265:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7294:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7302:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7287:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7287:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7287:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7314:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7325:6:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7333:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7321:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7321:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7314:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7345:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7360:2:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7364:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7356:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7356:11:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7349:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7421:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7430:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7438:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7423:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7423:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7423:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7390:2:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7398:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7401:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7394:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7394:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7386:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7386:19:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7407:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7382:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7382:28:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7412:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7379:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7379:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7376:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7456:15:20",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "7465:6:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7460:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7525:124:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7546:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7570:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7551:18:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7551:23:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7539:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7539:36:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7539:36:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7588:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7599:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "7604:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7595:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7595:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7588:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7620:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7631:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "7636:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7627:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7627:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7620:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7491:1:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7494:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7498:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7500:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7509:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7512:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7505:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7505:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7500:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7484:3:20",
                                "statements": []
                              },
                              "src": "7480:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7658:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7668:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7658:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7683:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7716:9:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7727:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7712:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7712:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7699:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7699:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7687:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7760:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7769:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7777:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7762:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7762:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7762:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7746:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7756:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7743:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7743:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7740:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7795:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7838:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7849:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7834:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7834:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7860:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7805:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7805:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7795:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6695:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6706:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6718:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6726:6:20",
                            "type": ""
                          }
                        ],
                        "src": "6600:1274:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7949:120:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7995:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8004:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8012:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7997:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7997:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7997:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7970:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7979:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7966:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7966:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7991:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7962:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7962:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7959:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8030:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8053:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8040:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8040:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8030:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7915:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7926:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7938:6:20",
                            "type": ""
                          }
                        ],
                        "src": "7879:190:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8161:177:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8207:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8216:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8224:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8209:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8209:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8209:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8182:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8191:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8178:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8178:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8203:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8174:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8174:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8171:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8242:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8265:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8252:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8252:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8242:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8284:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8317:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8328:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8313:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8313:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8294:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8294:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8284:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8119:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8130:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8142:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8150:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8074:264:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8412:186:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8458:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8467:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8475:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8460:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8460:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8460:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8433:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8442:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8429:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8429:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8454:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8425:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8425:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8422:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8493:36:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8519:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8506:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8506:23:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8497:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8562:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8538:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8538:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8538:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8577:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8587:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8577:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8378:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8389:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8401:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8343:255:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8683:179:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8729:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8738:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8746:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8731:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8731:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8731:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8704:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8713:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8700:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8700:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8725:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8696:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8696:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8693:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8764:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8783:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8777:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8777:16:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8768:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8826:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8802:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8802:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8802:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8841:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8851:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8841:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8649:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8660:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8672:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8603:259:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9058:729:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9105:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9114:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9122:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9107:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9107:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9107:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9079:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9088:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9075:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9075:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9100:3:20",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9071:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9071:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9068:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9140:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9167:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9154:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9154:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9144:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9186:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9196:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9190:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9241:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9250:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9258:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9243:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9243:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9243:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9229:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9237:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9226:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9226:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9223:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9276:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9307:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9318:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9303:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9303:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9327:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9286:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9286:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9276:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9344:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9371:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9382:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9367:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9367:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9354:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9354:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9344:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9395:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9428:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9439:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9424:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9424:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9405:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9405:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9395:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9452:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9479:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9490:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9475:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9475:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9462:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9462:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9452:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9503:43:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9530:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9541:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9526:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9526:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9513:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9513:33:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9503:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9555:43:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9582:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9593:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9578:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9578:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9565:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9565:33:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "9555:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9607:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9640:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9651:3:20",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9636:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9636:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9623:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9623:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9611:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9685:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "9694:6:20"
                                        },
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "9702:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9687:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9687:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9687:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9671:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9681:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9668:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9668:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9665:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9720:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9751:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9762:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9747:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9747:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9773:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9730:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9730:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9720:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_uint256t_addresst_uint256t_uint256t_uint256t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8976:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8987:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8999:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9007:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9015:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9023:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9031:6:20",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "9039:6:20",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "9047:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8867:920:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9872:261:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9918:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9927:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9935:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9920:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9920:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9920:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9893:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9902:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9889:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9889:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9914:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9885:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9885:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9882:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9953:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9980:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9967:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9967:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9957:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10033:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10042:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10050:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10035:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10035:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10035:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10005:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10013:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10002:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10002:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9999:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10068:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10099:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10110:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10095:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10095:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10119:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10078:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10078:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10068:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9838:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9849:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9861:6:20",
                            "type": ""
                          }
                        ],
                        "src": "9792:341:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10208:120:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10254:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10263:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10271:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10256:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10256:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10256:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10229:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10238:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10225:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10225:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10250:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10221:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10221:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10218:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10289:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10312:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10299:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10299:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10289:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10174:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10185:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10197:6:20",
                            "type": ""
                          }
                        ],
                        "src": "10138:190:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10394:376:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10404:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10424:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10418:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10418:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10408:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10446:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10451:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10439:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10439:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10439:19:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10467:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10477:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10471:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10490:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10501:3:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10506:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10497:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10497:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10490:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10518:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10536:5:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10543:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10532:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10532:14:20"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10522:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10555:12:20",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "10564:3:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10559:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10625:120:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10646:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "10657:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10651:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10651:13:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10639:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10639:26:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10639:26:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10678:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10689:3:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10694:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10685:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10685:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10678:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10710:25:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10724:6:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10732:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10720:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10720:15:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10710:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10587:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10590:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10584:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10584:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10598:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10600:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10609:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10612:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10605:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10605:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10600:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10580:3:20",
                                "statements": []
                              },
                              "src": "10576:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10754:10:20",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10761:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10754:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10371:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10378:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10386:3:20",
                            "type": ""
                          }
                        ],
                        "src": "10333:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10824:208:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10834:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10854:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10848:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10848:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10838:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10876:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10881:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10869:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10869:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10869:19:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "10923:5:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10930:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10919:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10919:16:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10941:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10946:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10937:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10937:14:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10953:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "10897:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10897:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10897:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10969:57:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10984:3:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10997:6:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11005:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "10993:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10993:15:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11014:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "11010:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11010:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "10989:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10989:29:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10980:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10980:39:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11021:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10976:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10976:50:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10969:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10801:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10808:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10816:3:20",
                            "type": ""
                          }
                        ],
                        "src": "10775:257:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11285:196:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11302:3:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11307:66:20",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11295:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11295:79:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11295:79:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11394:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11399:1:20",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11390:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11390:11:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11403:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11383:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11383:27:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11383:27:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11430:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11435:2:20",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11426:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11426:12:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11440:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11419:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11419:28:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11419:28:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11456:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11467:3:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11472:2:20",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11463:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11463:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "11456:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "11253:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11258:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11266:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11277:3:20",
                            "type": ""
                          }
                        ],
                        "src": "11037:444:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11875:397:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11892:3:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11897:25:20",
                                    "type": "",
                                    "value": "AccessControl: account "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11885:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11885:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11885:38:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11932:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11952:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11946:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11946:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11936:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11994:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12002:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11990:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11990:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12013:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12018:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12009:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12009:12:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12023:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "11968:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11968:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11968:62:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12039:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12053:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12058:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12049:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12049:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12043:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12085:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12089:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12081:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12081:11:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12094:19:20",
                                    "type": "",
                                    "value": " is missing role "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12074:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12074:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12074:40:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12123:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12145:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12139:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12139:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12127:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12187:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12195:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12183:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12183:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12206:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12210:2:20",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12202:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12202:11:20"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12215:8:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12161:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12161:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12161:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12233:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12248:2:20"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12252:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12244:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12244:17:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12263:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12240:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12240:26:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12233:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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": "11843:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11848:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11856:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11867:3:20",
                            "type": ""
                          }
                        ],
                        "src": "11486:786:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12378:125:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12388:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12400:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12411:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12396:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12396:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12388:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12430:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12445:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12453:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12441:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12441:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12423:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12423:74:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12423:74:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12347:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12358:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12369:4:20",
                            "type": ""
                          }
                        ],
                        "src": "12277:226:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12839:518:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12849:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12859:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12853:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12917:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12932:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12940:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12928:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12928:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12910:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12910:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12910:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12964:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12975:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12960:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12960:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12984:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12992:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12980:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12980:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12953:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12953:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12953:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13016:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13027:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13012:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13012:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13032:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13005:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13005:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13005:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13045:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13088:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13100:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13111:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13096:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13096:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "13059:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13059:57:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13049:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13136:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13147:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13132:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13132:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13156:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13164:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13152:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13152:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13125:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13125:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13125:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13184:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13227:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13235:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "13198:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13198:44:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13188:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13262:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13273:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13258:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13258:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "13283:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13291:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13279:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13279:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13251:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13251:51:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13251:51:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13311:40:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "13336:6:20"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13344:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13319:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13319:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13311:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12776:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "12787:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12795:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12803:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12811:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12819:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12830:4:20",
                            "type": ""
                          }
                        ],
                        "src": "12508:849:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13593:352:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13603:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13613:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13607:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13671:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13686:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13694:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13682:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13682:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13664:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13664:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13664:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13718:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13729:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13714:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13714:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13738:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13746:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13734:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13734:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13707:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13707:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13707:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13770:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13781:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13766:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13766:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13786:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13759:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13759:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13759:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13813:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13824:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13809:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13809:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13829:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13802:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13802:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13802:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13856:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13867:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13852:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13852:19:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13873:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13845:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13845:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13845:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13886:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "13911:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13923:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13934:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13919:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13919:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13894:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13894:45:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13886:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13530:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13541:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13549:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13557:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13565:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13573:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13584:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13362:583:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14101:110:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14118:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14129:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14111:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14111:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14111:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14141:64:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14178:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14190:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14201:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14186:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14186:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14149:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14149:56:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14141:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "14070:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14081:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14092:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13950:261:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14445:236:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14462:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14473:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14455:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14455:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14455:21:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14485:70:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14528:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14540:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14551:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14536:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14536:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14499:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14499:56:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14489:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14575:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14586:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14571:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14571:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14595:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14603:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14591:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14591:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14564:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14564:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14564:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14623:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14660:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14668:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14631:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14631:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14623:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14406:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14417:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14425:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14436:4:20",
                            "type": ""
                          }
                        ],
                        "src": "14216:465:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14781:92:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14791:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14803:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14814:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14799:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14799:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14791:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14833:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "14858:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "14851:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14851:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "14844:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14844:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14826:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14826:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14826:41:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14750:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14761:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14772:4:20",
                            "type": ""
                          }
                        ],
                        "src": "14686:187:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14979:76:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14989:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15001:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15012:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14997:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14997:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14989:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15031:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15042:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15024:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15024:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15024:25:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14948:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14959:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14970:4:20",
                            "type": ""
                          }
                        ],
                        "src": "14878:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15273:299:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15283:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15295:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15306:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15291:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15291:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15283:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15326:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15337:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15319:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15319:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15319:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15364:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15375:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15360:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15360:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15380:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15353:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15353:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15353:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15407:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15418:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15403:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15403:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15423:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15396:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15396:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15396:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15450:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15461:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15446:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15446:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15466:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15439:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15439:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15439:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15493:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15504:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15489:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15489:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "15514:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15522:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15510:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15510:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15482:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15482:84:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15482:84:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15210:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "15221:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15229:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15237:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15245:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15253:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15264:4:20",
                            "type": ""
                          }
                        ],
                        "src": "15060:512:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15846:387:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15856:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15868:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15879:3:20",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15864:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15864:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15856:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15899:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15910:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15892:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15892:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15892:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15937:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15948:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15933:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15933:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15953:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15926:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15926:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15926:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15980:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15991:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15976:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15976:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16000:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16008:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15996:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15996:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15969:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15969:83:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15969:83:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16072:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16083:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16068:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16068:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16088:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16061:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16061:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16061:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16115:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16126:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16111:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16111:19:20"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "16132:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16104:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16104:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16104:35:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16159:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16170:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16155:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16155:19:20"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "16176:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16148:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16148:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16148:35:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16203:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16214:3:20",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16199:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16199:19:20"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "16220:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16192:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16192:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16192:35:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__to_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15767:9:20",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "15778:6:20",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "15786:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "15794:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15802:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15810:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15818:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15826:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15837:4:20",
                            "type": ""
                          }
                        ],
                        "src": "15577:656:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16419:217:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16429:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16441:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16452:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16437:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16437:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16429:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16472:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16483:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16465:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16465:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16465:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16510:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16521:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16506:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16506:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16530:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16538:4:20",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16526:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16526:17:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16499:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16499:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16499:45:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16564:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16575:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16560:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16560:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16580:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16553:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16553:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16553:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16607:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16618:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16603:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16603:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16623:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16596:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16596:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16596:34:20"
                            }
                          ]
                        },
                        "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": "16364:9:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16375:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16383:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16391:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16399:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16410:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16238:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16762:98:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16779:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16790:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16772:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16772:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16772:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16802:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16827:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16839:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16850:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16835:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16835:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "16810:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16810:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16802:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16731:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16742:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16753:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16641:219:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17039:174:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17056:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17067:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17049:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17049:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17049:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17090:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17101:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17086:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17086:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17106:2:20",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17079:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17079:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17079:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17129:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17140:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17125:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17125:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17145:26:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17118:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17118:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17118:54:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17181:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17193:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17204:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17189:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17189:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17181:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17016:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17030:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16865:348:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17392:242:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17409:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17420:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17402:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17402:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17402:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17443:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17454:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17439:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17439:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17459:2:20",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17432:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17432:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17432:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17482:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17493:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17478:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17478:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17498:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to non ERC1155"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17471:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17471:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17471:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17553:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17564:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17549:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17549:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17569:22:20",
                                    "type": "",
                                    "value": "Receiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17542:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17542:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17542:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17601:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17613:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17624:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17609:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17609:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17601:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17369:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17383:4:20",
                            "type": ""
                          }
                        ],
                        "src": "17218:416:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17813:237:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17830:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17841:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17823:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17823:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17823:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17864:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17875:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17860:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17860:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17880:2:20",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17853:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17853:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17853:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17903:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17914:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17899:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17899:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17919:34:20",
                                    "type": "",
                                    "value": "ERC1155: caller is not token own"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17892:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17892:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17892:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17974:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17985:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17970:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17970:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17990:17:20",
                                    "type": "",
                                    "value": "er nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17963:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17963:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17963:45:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18017:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18029:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18040:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18025:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18025:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18017:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17790:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17804:4:20",
                            "type": ""
                          }
                        ],
                        "src": "17639:411:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18229:182:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18246:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18257:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18239:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18239:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18239:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18280:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18291:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18276:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18276:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18296:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18269:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18269:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18269:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18319:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18330:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18315:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18315:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18335:34:20",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18308:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18308:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18308:62:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18379:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18391:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18402:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18387:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18387:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18379:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18206:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18220:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18055:356:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18590:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18607:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18618:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18600:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18600:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18600:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18641:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18652:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18637:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18637:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18657:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18630:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18630:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18630:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18680:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18691:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18676:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18676:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18696:34:20",
                                    "type": "",
                                    "value": "ERC1155: ERC1155Receiver rejecte"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18669:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18669:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18669:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18751:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18762:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18747:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18747:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18767:10:20",
                                    "type": "",
                                    "value": "d tokens"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18740:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18740:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18740:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18787:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18799:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18810:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18795:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18795:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18787:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18567:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18581:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18416:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18999:170:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19016:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19027:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19009:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19009:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19009:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19050:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19061:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19046:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19046:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19066:2:20",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19039:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19039:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19039:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19089:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19100:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19085:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19085:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19105:22:20",
                                    "type": "",
                                    "value": "Pausable: not paused"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19078:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19078:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19078:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19137:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19149:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19160:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19145:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19145:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19137:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18976:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18990:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18825:344:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19348:181:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19365:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19376:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19358:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19358:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19358:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19399:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19410:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19395:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19395:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19415:2:20",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19388:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19388:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19388:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19438:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19449:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19434:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19434:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19454:33:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19427:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19427:61:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19427:61:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19497:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19509:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19520:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19505:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19505:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19497:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19325:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19339:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19174:355:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19708:226:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19725:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19736:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19718:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19718:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19718:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19759:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19770:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19755:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19755:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19775:2:20",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19748:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19748:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19748:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19798:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19809:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19794:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19794:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19814:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn amount exceeds bal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19787:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19787:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19787:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19869:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19880:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19865:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19865:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19885:6:20",
                                    "type": "",
                                    "value": "ance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19858:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19858:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19858:34:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19901:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19913:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19924:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19909:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19909:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19901:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19685:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19699:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19534:400:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20113:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20130:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20141:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20123:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20123:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20123:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20164:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20175:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20160:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20160:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20180:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20153:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20153:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20153:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20203:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20214:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20199:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20199:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20219:34:20",
                                    "type": "",
                                    "value": "ERC1155: address zero is not a v"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20192:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20192:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20192:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20274:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20285:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20270:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20270:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20290:12:20",
                                    "type": "",
                                    "value": "alid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20263:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20263:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20263:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20312:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20324:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20335:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20320:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20320:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20312:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20090:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20104:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19939:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20524:224:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20541:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20552:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20534:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20534:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20534:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20575:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20586:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20571:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20571:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20591:2:20",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20564:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20564:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20564:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20614:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20625:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20610:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20610:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20630:34:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20603:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20603:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20603:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20685:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20696:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20681:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20681:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20701:4:20",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20674:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20674:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20674:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20715:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20727:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20738:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20723:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20723:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20715:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20501:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20515:4:20",
                            "type": ""
                          }
                        ],
                        "src": "20350:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20927:174:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20944:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20955:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20937:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20937:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20937:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20978:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20989:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20974:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20974:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20994:2:20",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20967:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20967:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20967:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21017:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21028:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21013:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21013:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21033:26:20",
                                    "type": "",
                                    "value": "Transfer pass is expired"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21006:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21006:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21006:54:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21069:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21081:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21092:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21077:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21077:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21069:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20904:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20918:4:20",
                            "type": ""
                          }
                        ],
                        "src": "20753:348:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21280:166:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21297:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21308:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21290:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21290:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21290:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21331:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21342:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21327:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21327:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21347:2:20",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21320:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21320:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21320:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21370:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21381:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21366:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21366:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21386:18:20",
                                    "type": "",
                                    "value": "Pausable: paused"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21359:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21359:46:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21359:46:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21414:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21426:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21437:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21422:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21422:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21414:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21257:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21271:4:20",
                            "type": ""
                          }
                        ],
                        "src": "21106:340:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21625:227:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21642:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21653:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21635:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21635:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21635:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21676:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21687:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21672:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21672:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21692:2:20",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21665:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21665:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21665:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21715:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21726:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21711:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21711:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21731:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21704:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21704:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21704:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21786:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21797:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21782:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21782:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21802:7:20",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21775:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21775:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21775:35:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21819:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21831:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21842:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21827:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21827:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21819:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21602:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21616:4:20",
                            "type": ""
                          }
                        ],
                        "src": "21451:401:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22031:224:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22048:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22059:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22041:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22041:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22041:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22082:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22093:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22078:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22078:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22098:2:20",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22071:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22071:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22071:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22121:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22132:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22117:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22117:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22137:34:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22110:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22110:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22110:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22192:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22203:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22188:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22188:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22208:4:20",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22181:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22181:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22181:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22222:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22234:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22245:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22230:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22230:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22222:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22008:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22022:4:20",
                            "type": ""
                          }
                        ],
                        "src": "21857:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22434:225:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22451:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22462:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22444:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22444:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22444:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22485:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22496:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22481:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22481:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22501:2:20",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22474:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22474:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22474:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22524:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22535:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22520:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22520:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22540:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn from the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22513:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22513:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22513:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22595:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22606:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22591:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22591:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22611:5:20",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22584:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22584:33:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22584:33:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22626:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22638:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22649:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22634:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22634:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22626:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22411:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22425:4:20",
                            "type": ""
                          }
                        ],
                        "src": "22260:399:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22838:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22855:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22866:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22848:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22848:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22848:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22889:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22900:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22885:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22885:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22905:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22878:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22878:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22878:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22928:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22939:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22924:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22924:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22944:34:20",
                                    "type": "",
                                    "value": "ERC1155: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22917:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22917:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22917:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22999:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23010:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22995:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22995:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23015:12:20",
                                    "type": "",
                                    "value": "r transfer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22988:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22988:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22988:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23037:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23049:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23060:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23045:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23045:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23037:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22815:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22829:4:20",
                            "type": ""
                          }
                        ],
                        "src": "22664:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23249:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23266:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23277:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23259:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23259:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23259:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23300:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23311:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23296:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23296:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23316:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23289:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23289:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23289:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23339:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23350:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23335:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23335:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23355:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn amount exceeds tot"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23328:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23328:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23328:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23410:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23421:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23406:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23406:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23426:10:20",
                                    "type": "",
                                    "value": "alSupply"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23399:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23399:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23399:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23446:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23458:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23469:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23454:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23454:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23446:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23226:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23240:4:20",
                            "type": ""
                          }
                        ],
                        "src": "23075:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23658:180:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23675:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23686:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23668:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23668:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23668:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23709:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23720:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23705:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23705:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23725:2:20",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23698:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23698:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23698:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23748:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23759:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23744:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23744:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23764:32:20",
                                    "type": "",
                                    "value": "Transfer pass was already used"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23737:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23737:60:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23737:60:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23806:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23818:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23829:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23814:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23814:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23806:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23635:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23649:4:20",
                            "type": ""
                          }
                        ],
                        "src": "23484:354:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24017:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24034:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24045:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24027:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24027:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24027:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24068:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24079:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24064:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24064:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24084:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24057:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24057:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24057:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24107:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24118:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24103:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24103:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24123:34:20",
                                    "type": "",
                                    "value": "ERC1155: setting approval status"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24096:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24096:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24096:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24178:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24189:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24174:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24174:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24194:11:20",
                                    "type": "",
                                    "value": " for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24167:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24167:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24167:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24215:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24227:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24238:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24223:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24223:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24215:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23994:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24008:4:20",
                            "type": ""
                          }
                        ],
                        "src": "23843:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24427:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24444:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24455:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24437:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24437:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24437:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24478:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24489:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24474:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24474:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24494:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24467:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24467:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24467:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24517:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24528:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24513:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24513:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24533:34:20",
                                    "type": "",
                                    "value": "ERC1155: accounts and ids length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24506:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24506:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24506:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24588:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24599:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24584:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24584:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24604:11:20",
                                    "type": "",
                                    "value": " mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24577:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24577:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24577:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24625:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24637:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24648:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24633:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24633:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24625:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24404:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24418:4:20",
                            "type": ""
                          }
                        ],
                        "src": "24253:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24837:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24854:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24865:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24847:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24847:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24847:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24888:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24899:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24884:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24884:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24904:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24877:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24877:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24877:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24927:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24938:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24923:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24923:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24943:34:20",
                                    "type": "",
                                    "value": "ERC1155: ids and amounts length "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24916:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24916:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24916:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24998:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25009:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24994:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24994:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25014:10:20",
                                    "type": "",
                                    "value": "mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24987:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24987:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24987:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25034:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25046:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25057:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25042:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25042:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25034:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24814:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24828:4:20",
                            "type": ""
                          }
                        ],
                        "src": "24663:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25246:223:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25263:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25274:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25256:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25256:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25256:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25297:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25308:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25293:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25293:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25313:2:20",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25286:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25286:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25286:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25336:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25347:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25332:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25332:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25352:34:20",
                                    "type": "",
                                    "value": "ERC1155: mint to the zero addres"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25325:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25325:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25325:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25407:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25418:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25403:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25403:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25423:3:20",
                                    "type": "",
                                    "value": "s"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25396:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25396:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25396:31:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25436:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25448:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25459:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25444:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25444:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25436:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25223:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25237:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25072:397:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25648:237:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25665:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25676:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25658:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25658:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25658:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25699:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25710:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25695:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25695:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25715:2:20",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25688:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25688:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25688:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25738:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25749:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25734:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25734:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25754:34:20",
                                    "type": "",
                                    "value": "AccessControl: can only renounce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25727:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25727:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25727:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25809:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25820:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25805:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25805:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25825:17:20",
                                    "type": "",
                                    "value": " roles for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25798:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25798:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25798:45:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25852:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25864:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25875:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25860:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25860:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25852:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25625:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25639:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25474:411:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26064:229:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26081:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26092:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26074:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26074:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26074:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26115:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26126:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26111:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26111:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26131:2:20",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26104:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26104:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26104:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26154:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26165:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26150:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26150:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26170:34:20",
                                    "type": "",
                                    "value": "Only the transferrer sign transf"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26143:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26143:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26143:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26225:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26236:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26221:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26221:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26241:9:20",
                                    "type": "",
                                    "value": "er pass"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26214:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26214:37:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26214:37:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26260:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26272:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26283:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26268:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26268:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26260:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26041:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26055:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25890:403:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26399:76:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26409:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26421:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26432:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26417:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26417:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26409:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26451:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26462:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26444:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26444:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26444:25:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26368:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26379:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26390:4:20",
                            "type": ""
                          }
                        ],
                        "src": "26298:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26665:255:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26675:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26687:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26698:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26683:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26683:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26675:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26718:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26729:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26711:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26711:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26711:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26756:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26767:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26752:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26752:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26776:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26784:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "26772:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26772:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26745:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26745:83:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26745:83:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26848:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26859:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26844:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26844:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "26864:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26837:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26837:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26837:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26891:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26902:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26887:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26887:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "26907:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26880:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26880:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26880:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26610:9:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "26621:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "26629:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26637:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26645:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26656:4:20",
                            "type": ""
                          }
                        ],
                        "src": "26480:440:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27054:119:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27064:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27076:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27087:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27072:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27072:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27064:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27106:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27117:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27099:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27099:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27099:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27144:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27155:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27140:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27140:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27160:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27133:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27133:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27133:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27015:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27026:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27034:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27045:4:20",
                            "type": ""
                          }
                        ],
                        "src": "26925:248:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27247:114:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27291:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "27293:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27293:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27293:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "27263:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27271:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27260:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27260:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "27257:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27322:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27338:1:20",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "27341:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "27334:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27334:14:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27350:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27330:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27330:25:20"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "27322:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "27227:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "27238:4:20",
                            "type": ""
                          }
                        ],
                        "src": "27178:183:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27414:80:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27441:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "27443:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27443:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27443:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27430:1:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "27437:1:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "27433:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27433:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27427:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27427:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "27424:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27472:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27483:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "27486:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27479:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27479:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "27472:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "27397:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "27400:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "27406:3:20",
                            "type": ""
                          }
                        ],
                        "src": "27366:128:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27551:116:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27610:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "27612:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27612:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27612:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "27582:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "27575:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27575:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "27568:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27568:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "27590:1:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "27601:1:20",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "27597:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27597:6:20"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "27605:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "27593:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27593:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27587:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27587:21:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "27564:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27564:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "27561:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27641:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27656:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "27659:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "27652:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27652:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "27641:7:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "27530:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "27533:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "27539:7:20",
                            "type": ""
                          }
                        ],
                        "src": "27499:168:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27725:205:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27735:10:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "27744:1:20",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "27739:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27804:63:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "27829:3:20"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "27834:1:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "27825:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27825:11:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27848:3:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27853:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "27844:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27844:11:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "27838:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27838:18:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "27818:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27818:39:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27818:39:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "27765:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "27768:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27762:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27762:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "27776:19:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "27778:15:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "27787:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27790:2:20",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "27783:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27783:10:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "27778:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "27758:3:20",
                                "statements": []
                              },
                              "src": "27754:113:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27893:31:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "27906:3:20"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "27911:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "27902:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27902:16:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27920:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "27895:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27895:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27895:27:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "27882:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "27885:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27879:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27879:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "27876:2:20"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "27703:3:20",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "27708:3:20",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "27713:6:20",
                            "type": ""
                          }
                        ],
                        "src": "27672:258:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27982:89:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28009:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "28011:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28011:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28011:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28002:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27995:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27995:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "27992:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28040:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28051:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28062:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "28058:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28058:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28047:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28047:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "28040:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "27964:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "27974:3:20",
                            "type": ""
                          }
                        ],
                        "src": "27935:136:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28131:382:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28141:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28155:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "28158:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "28151:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28151:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "28141:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28172:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "28202:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28208:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "28198:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28198:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "28176:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28249:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "28251:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "28265:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28273:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "28261:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28261:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "28251:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "28229:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "28222:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28222:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "28219:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28339:168:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28360:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28363:77:20",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "28353:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28353:88:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28353:88:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28461:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28464:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "28454:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28454:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28454:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28489:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28492:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28482:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28482:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28482:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "28295:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "28318:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28326:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28315:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28315:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "28292:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28292:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "28289:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "28111:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "28120:6:20",
                            "type": ""
                          }
                        ],
                        "src": "28076:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28565:202:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28575:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28597:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "28613:4:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "28619:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28609:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28609:13:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "28628:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "28624:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28624:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "28605:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28605:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28593:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28593:40:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "28579:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28708:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "28710:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28710:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28710:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28651:10:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28663:18:20",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28648:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28648:34:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28687:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28699:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28684:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28684:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "28645:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28645:62:20"
                              },
                              "nodeType": "YulIf",
                              "src": "28642:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28746:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28750:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28739:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28739:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28739:22:20"
                            }
                          ]
                        },
                        "name": "finalize_allocation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "28547:6:20",
                            "type": ""
                          },
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "28555:4:20",
                            "type": ""
                          }
                        ],
                        "src": "28518:249:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28819:88:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28850:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "28852:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28852:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28852:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28835:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28846:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "28842:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28842:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "28832:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28832:17:20"
                              },
                              "nodeType": "YulIf",
                              "src": "28829:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28881:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28892:5:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28899:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28888:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28888:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "28881:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "28801:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "28811:3:20",
                            "type": ""
                          }
                        ],
                        "src": "28772:135:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28944:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28961:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28964:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28954:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28954:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28954:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29058:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29061:4:20",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29051:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29051:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29051:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29082:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29085:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "29075:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29075:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29075:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "28912:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29133:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29150:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29153:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29143:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29143:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29143:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29247:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29250:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29240:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29240:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29240:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29271:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29274:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "29264:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29264:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29264:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "29101:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29333:142:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29378:91:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "29407:3:20"
                                        },
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "29412:3:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29417:1:20",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "returndatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "29392:14:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29392:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29392:27:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "29432:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29443:3:20",
                                          "type": "",
                                          "value": "224"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "sig",
                                              "nodeType": "YulIdentifier",
                                              "src": "29454:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "29448:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "29448:10:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29439:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29439:20:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "sig",
                                        "nodeType": "YulIdentifier",
                                        "src": "29432:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "29349:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29349:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29367:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29346:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29346:23:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29343:2:20"
                            }
                          ]
                        },
                        "name": "return_data_selector",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "sig",
                            "nodeType": "YulTypedName",
                            "src": "29325:3:20",
                            "type": ""
                          }
                        ],
                        "src": "29290:185:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29527:624:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29567:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "29569:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "29543:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29543:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29561:4:20",
                                    "type": "",
                                    "value": "0x44"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29540:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29540:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29537:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29585:21:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29603:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29597:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29597:9:20"
                              },
                              "variables": [
                                {
                                  "name": "data",
                                  "nodeType": "YulTypedName",
                                  "src": "29589:4:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29615:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29629:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "29625:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29625:6:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29619:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "29655:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29661:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "returndatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "29668:14:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29668:16:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29686:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29664:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29664:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "29640:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29640:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29640:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29699:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "29719:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29713:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29713:11:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "29703:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29733:26:20",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "29743:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29743:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "29737:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29768:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "29778:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "29772:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29854:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "29856:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "29814:6:20"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "29822:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29811:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29811:14:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "29834:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29842:4:20",
                                            "type": "",
                                            "value": "0x24"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29830:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29830:17:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "29849:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29827:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29827:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "29808:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29808:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29805:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29872:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "29887:4:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "29893:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29883:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29883:17:20"
                              },
                              "variables": [
                                {
                                  "name": "msg",
                                  "nodeType": "YulTypedName",
                                  "src": "29876:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29909:24:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msg",
                                    "nodeType": "YulIdentifier",
                                    "src": "29929:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29923:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29923:10:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "29913:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29960:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "29962:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "29948:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "29956:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29945:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29945:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29942:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30051:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "30053:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "msg",
                                            "nodeType": "YulIdentifier",
                                            "src": "29992:3:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "29997:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29988:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29988:16:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30006:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29984:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29984:27:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "30021:4:20"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "30027:14:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30027:16:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30017:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30017:27:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "30046:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30013:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30013:36:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29981:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29981:69:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29978:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "30089:4:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "30103:6:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "30111:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30099:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30099:19:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30120:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30095:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30095:30:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "30069:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30069:57:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30069:57:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30135:10:20",
                              "value": {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "30142:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "30135:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "try_decode_error_message",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "29519:3:20",
                            "type": ""
                          }
                        ],
                        "src": "29480:671:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30200:133:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30311:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30320:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30323:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30313:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30313:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30313:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "30223:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "30234:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30241:66:20",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "30230:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30230:78:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "30220:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30220:89:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30213:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30213:97:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30210:2:20"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "30189:5:20",
                            "type": ""
                          }
                        ],
                        "src": "30156:177:20"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_address_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_address_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_address(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_uint256t_addresst_uint256t_uint256t_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        let offset_1 := calldataload(add(headStart, 192))\n        if gt(offset_1, _1) { revert(value6, value6) }\n        value6 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\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        end := pos\n    }\n    function abi_encode_bytes(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_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, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\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), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes(value4, add(headStart, 160))\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        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_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_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_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__to_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\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 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_bytes(value0, add(headStart, 32))\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_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__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), \"ERC1155: caller is not token own\")\n        mstore(add(headStart, 96), \"er nor approved\")\n        tail := add(headStart, 128)\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_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__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), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pausable: not paused\")\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_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__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), \"ERC1155: burn amount exceeds bal\")\n        mstore(add(headStart, 96), \"ance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n        mstore(add(headStart, 96), \"alid owner\")\n        tail := add(headStart, 128)\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_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3__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), \"Transfer pass is expired\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__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), \"Pausable: paused\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__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), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\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_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC1155: burn from the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4__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), \"ERC1155: burn amount exceeds tot\")\n        mstore(add(headStart, 96), \"alSupply\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Transfer pass was already used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__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), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__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), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__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), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__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), \"ERC1155: mint to the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__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), \"AccessControl: can only renounce\")\n        mstore(add(headStart, 96), \" roles for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"Only the transferrer sign transf\")\n        mstore(add(headStart, 96), \"er pass\")\n        tail := add(headStart, 128)\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_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_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 array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\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 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 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 decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\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, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(sig, sig, 4)\n            sig := shr(224, mload(sig))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "3300": [
                  {
                    "length": 32,
                    "start": 9380
                  }
                ],
                "3302": [
                  {
                    "length": 32,
                    "start": 9338
                  }
                ],
                "3304": [
                  {
                    "length": 32,
                    "start": 9296
                  }
                ],
                "3306": [
                  {
                    "length": 32,
                    "start": 9463
                  }
                ],
                "3308": [
                  {
                    "length": 32,
                    "start": 9500
                  }
                ],
                "3310": [
                  {
                    "length": 32,
                    "start": 9421
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101ef5760003560e01c80636b20c4541161010f578063bd85b039116100a2578063e8a3d48511610071578063e8a3d485146104d4578063e985e9c5146104dc578063f242432a14610518578063f5298aca1461052b57600080fd5b8063bd85b03914610453578063d539139314610473578063d547741f1461049a578063e63ab1e9146104ad57600080fd5b806391d14854116100de57806391d14854146103ec578063938e3d7b14610425578063a217fddf14610438578063a22cb4651461044057600080fd5b80636b20c45414610397578063731133e9146103aa5780637f345710146103bd5780638456cb59146103e457600080fd5b80632eb2c2d6116101875780634e1273f4116101565780634e1273f4146103235780634f558e79146103435780635c975abb1461036557806363ac5d971461037057600080fd5b80632eb2c2d6146102e25780632f2ff15d146102f557806336568abe146103085780633f4ba83a1461031b57600080fd5b8063121df247116101c3578063121df247146102725780631f7fdffa1461029957806323a45c61146102ac578063248a9ca3146102bf57600080fd5b8062fdd58e146101f457806301ffc9a71461021a57806302fe53051461023d5780630e89341c14610252575b600080fd5b610207610202366004613101565b61053e565b6040519081526020015b60405180910390f35b61022d6102283660046132b4565b6105e7565b6040519015158152602001610211565b61025061024b366004613384565b6105f8565b005b61026561026036600461327a565b61062f565b6040516102119190613588565b6102077f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a81565b6102506102a7366004613032565b6106d1565b6102506102ba3660046132ec565b61070e565b6102076102cd36600461327a565b60009081526003602052604090206001015490565b6102506102f0366004612eb8565b610a5a565b610250610303366004613292565b610ae7565b610250610316366004613292565b610b11565b610250610b99565b6103366103313660046131af565b610bce565b6040516102119190613547565b61022d61035136600461327a565b600090815260056020526040902054151590565b60045460ff1661022d565b6102077f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d781565b6102506103a5366004612fc1565b610d44565b6102506103b836600461315c565b610dcf565b6102077f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b610250610e05565b61022d6103fa366004613292565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610250610433366004613384565b610e37565b610207600081565b61025061044e3660046130c7565b610e74565b61020761046136600461327a565b60009081526005602052604090205490565b6102077f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102506104a8366004613292565b610e7f565b6102077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610265610ea4565b61022d6104ea366004612e86565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610250610526366004612f5e565b610f36565b61025061053936600461312a565b610fc3565b60006001600160a01b0383166105c15760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006105f28261127c565b92915050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c610622816112ba565b61062b826112c4565b5050565b600081815260076020526040902080546060919061064c90613639565b80601f016020809104026020016040519081016040528092919081815260200182805461067890613639565b80156106c55780601f1061069a576101008083540402835291602001916106c5565b820191906000526020600020905b8154815290600101906020018083116106a857829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106fb816112ba565b610707858585856112d7565b5050505050565b8051602080830191909120604080517f8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c9381019390935282018890526001600160a01b03871660608301526080820186905260a0820185905260c0820184905260e08201526000906107999061010001604051602081830303815290604052805190602001206114c8565b905060006107a7828a611531565b6001600160a01b03811660009081527ffb3afc54f817751654582ff74016652df45ddcd07c58eb7f7f8c2365d03ecadf602052604090205490915060ff166108575760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865207472616e73666572726572207369676e207472616e736660448201527f657220706173730000000000000000000000000000000000000000000000000060648201526084016105b8565b8342106108a65760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220706173732069732065787069726564000000000000000060448201526064016105b8565b60008881526008602052604090205460ff16156109055760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657220706173732077617320616c72656164792075736564000060448201526064016105b8565b6000868152600760205260408120805461091e90613639565b80601f016020809104026020016040519081016040528092919081815260200182805461094a90613639565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b505050505090508051600014156109c957600087815260076020908152604090912085516109c792870190612cee565b505b604080518a81526001600160a01b038a166020820152908101889052606081018790527fe202102ce42c14d1f73e60059def856f1b1bc2a387f48d1c61980befd84fe7029060800160405180910390a16000898152600860209081526040808320805460ff1916600117905580519182019052908152610a4e9089908990899061154d565b50505050505050505050565b6001600160a01b038516331480610a765750610a7685336104ea565b610ada5760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b6107078585858585611670565b600082815260036020526040902060010154610b02816112ba565b610b0c83836118f8565b505050565b6001600160a01b0381163314610b8f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016105b8565b61062b828261199a565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bc3816112ba565b610bcb611a1d565b50565b60608151835114610c475760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016105b8565b6000835167ffffffffffffffff811115610c7157634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c9a578160200160208202803683370190505b50905060005b8451811015610d3c57610d01858281518110610ccc57634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610cf457634e487b7160e01b600052603260045260246000fd5b602002602001015161053e565b828281518110610d2157634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610d35816136a1565b9050610ca0565b509392505050565b6001600160a01b038316331480610d605750610d6083336104ea565b610dc45760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b610b0c838383611a6f565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610df9816112ba565b6107078585858561154d565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e2f816112ba565b610bcb611ce2565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a610e61816112ba565b8151610b0c906006906020850190612cee565b61062b338383611d1f565b600082815260036020526040902060010154610e9a816112ba565b610b0c838361199a565b606060068054610eb390613639565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf90613639565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b5050505050905090565b6001600160a01b038516331480610f525750610f5285336104ea565b610fb65760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b6107078585858585611e14565b6001600160a01b038316331480610fdf5750610fdf83336104ea565b6110435760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105b8565b610b0c838383611fcd565b6060600061105d8360026135d7565b6110689060026135bf565b67ffffffffffffffff81111561108e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110b8576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110fd57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061115657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061117a8460026135d7565b6111859060016135bf565b90505b6001811115611226577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106111d457634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106111f857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361121f81613622565b9050611188565b5083156112755760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b8565b9392505050565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806105f257506105f28261215d565b610bcb81336121f8565b805161062b906002906020840190612cee565b6001600160a01b0384166113375760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016105b8565b81518351146113995760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b336113a981600087878787612278565b60005b8451811015611460578381815181106113d557634e487b7160e01b600052603260045260246000fd5b602002602001015160008087848151811061140057634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461144891906135bf565b90915550819050611458816136a1565b9150506113ac565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516114b192919061355a565b60405180910390a46107078160008787878761228e565b60006105f26114d5612443565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611540858561256d565b91509150610d3c816125dd565b6001600160a01b0384166115ad5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016105b8565b3360006115b9856127de565b905060006115c6856127de565b90506115d783600089858589612278565b6000868152602081815260408083206001600160a01b038b168452909152812080548792906116079084906135bf565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461166783600089898989612837565b50505050505050565b81518351146116d25760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b6001600160a01b0384166117365760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105b8565b33611745818787878787612278565b60005b845181101561188a57600085828151811061177357634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061179f57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156118325760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016105b8565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061186f9084906135bf565b9250508190555050505080611883906136a1565b9050611748565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118da92919061355a565b60405180910390a46118f081878787878761228e565b505050505050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff1661062b5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119563390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff161561062b5760008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611a25612942565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316611ad15760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016105b8565b8051825114611b335760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016105b8565b6000339050611b5681856000868660405180602001604052806000815250612278565b60005b8351811015611c73576000848281518110611b8457634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110611bb057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038c168352909352919091205490915081811015611c3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016105b8565b6000928352602083815260408085206001600160a01b038b1686529091529092209103905580611c6b816136a1565b915050611b59565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611cc492919061355a565b60405180910390a46040805160208101909152600090525b50505050565b611cea612996565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a523390565b816001600160a01b0316836001600160a01b03161415611da75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016105b8565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611e785760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105b8565b336000611e84856127de565b90506000611e91856127de565b9050611ea1838989858589612278565b6000868152602081815260408083206001600160a01b038c16845290915290205485811015611f255760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016105b8565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611f629084906135bf565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611fc2848a8a8a8a8a612837565b505050505050505050565b6001600160a01b03831661202f5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016105b8565b33600061203b846127de565b90506000612048846127de565b905061206883876000858560405180602001604052806000815250612278565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156120e55760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016105b8565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052611667565b60006001600160e01b031982167fd9b67a260000000000000000000000000000000000000000000000000000000014806121c057506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806105f257507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146105f2565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff1661062b57612236816001600160a01b0316601461104e565b61224183602061104e565b604051602001612252929190613425565b60408051601f198184030181529082905262461bcd60e51b82526105b891600401613588565b612280612996565b6118f08686868686866129e9565b6001600160a01b0384163b156118f05760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906122d290899089908890889088906004016134a6565b602060405180830381600087803b1580156122ec57600080fd5b505af192505050801561231c575060408051601f3d908101601f19168201909252612319918101906132d0565b60015b6123d2576123286136e8565b806308c379a01415612362575061233d6136ff565b806123485750612364565b8060405162461bcd60e51b81526004016105b89190613588565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016105b8565b6001600160e01b0319811663bc197c8160e01b146116675760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016105b8565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561249c57507f000000000000000000000000000000000000000000000000000000000000000046145b156124c657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b90565b6000808251604114156125a45760208301516040840151606085015160001a61259887828585612baf565b945094505050506125d6565b8251604014156125ce57602083015160408401516125c3868383612c9c565b9350935050506125d6565b506000905060025b9250929050565b60008160048111156125ff57634e487b7160e01b600052602160045260246000fd5b14156126085750565b600181600481111561262a57634e487b7160e01b600052602160045260246000fd5b14156126785760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105b8565b600281600481111561269a57634e487b7160e01b600052602160045260246000fd5b14156126e85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105b8565b600381600481111561270a57634e487b7160e01b600052602160045260246000fd5b14156127635760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105b8565b600481600481111561278557634e487b7160e01b600052602160045260246000fd5b1415610bcb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105b8565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061282657634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156118f05760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061287b9089908990889088908890600401613504565b602060405180830381600087803b15801561289557600080fd5b505af19250505080156128c5575060408051601f3d908101601f191682019092526128c2918101906132d0565b60015b6128d1576123286136e8565b6001600160e01b0319811663f23a6e6160e01b146116675760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016105b8565b60045460ff166129945760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016105b8565b565b60045460ff16156129945760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016105b8565b6001600160a01b038516612a8c5760005b8351811015612a8a57828181518110612a2357634e487b7160e01b600052603260045260246000fd5b602002602001015160056000868481518110612a4f57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612a7491906135bf565b90915550612a839050816136a1565b90506129fa565b505b6001600160a01b0384166118f05760005b8351811015611667576000848281518110612ac857634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110612af457634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006005600084815260200190815260200160002054905081811015612b8c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c7900000000000000000000000000000000000000000000000060648201526084016105b8565b60009283526005602052604090922091039055612ba8816136a1565b9050612a9d565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612be65750600090506003612c93565b8460ff16601b14158015612bfe57508460ff16601c14155b15612c0f5750600090506004612c93565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c63573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c8c57600060019250925050612c93565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681612cd260ff86901c601b6135bf565b9050612ce087828885612baf565b935093505050935093915050565b828054612cfa90613639565b90600052602060002090601f016020900481019282612d1c5760008555612d62565b82601f10612d3557805160ff1916838001178555612d62565b82800160010185558215612d62579182015b82811115612d62578251825591602001919060010190612d47565b50612d6e929150612d72565b5090565b5b80821115612d6e5760008155600101612d73565b80356001600160a01b0381168114612d9e57600080fd5b919050565b600082601f830112612db3578081fd5b81356020612dc08261359b565b604051612dcd8282613674565b8381528281019150858301600585901b87018401881015612dec578586fd5b855b85811015612e0a57813584529284019290840190600101612dee565b5090979650505050505050565b600082601f830112612e27578081fd5b813567ffffffffffffffff811115612e4157612e416136d2565b604051612e58601f8301601f191660200182613674565b818152846020838601011115612e6c578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215612e98578182fd5b612ea183612d87565b9150612eaf60208401612d87565b90509250929050565b600080600080600060a08688031215612ecf578081fd5b612ed886612d87565b9450612ee660208701612d87565b9350604086013567ffffffffffffffff80821115612f02578283fd5b612f0e89838a01612da3565b94506060880135915080821115612f23578283fd5b612f2f89838a01612da3565b93506080880135915080821115612f44578283fd5b50612f5188828901612e17565b9150509295509295909350565b600080600080600060a08688031215612f75578081fd5b612f7e86612d87565b9450612f8c60208701612d87565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fb5578182fd5b612f5188828901612e17565b600080600060608486031215612fd5578283fd5b612fde84612d87565b9250602084013567ffffffffffffffff80821115612ffa578384fd5b61300687838801612da3565b9350604086013591508082111561301b578283fd5b5061302886828701612da3565b9150509250925092565b60008060008060808587031215613047578384fd5b61305085612d87565b9350602085013567ffffffffffffffff8082111561306c578485fd5b61307888838901612da3565b9450604087013591508082111561308d578384fd5b61309988838901612da3565b935060608701359150808211156130ae578283fd5b506130bb87828801612e17565b91505092959194509250565b600080604083850312156130d9578182fd5b6130e283612d87565b9150602083013580151581146130f6578182fd5b809150509250929050565b60008060408385031215613113578182fd5b61311c83612d87565b946020939093013593505050565b60008060006060848603121561313e578081fd5b61314784612d87565b95602085013595506040909401359392505050565b60008060008060808587031215613171578182fd5b61317a85612d87565b93506020850135925060408501359150606085013567ffffffffffffffff8111156131a3578182fd5b6130bb87828801612e17565b600080604083850312156131c1578182fd5b823567ffffffffffffffff808211156131d8578384fd5b818501915085601f8301126131eb578384fd5b813560206131f88261359b565b6040516132058282613674565b8381528281019150858301600585901b870184018b1015613224578889fd5b8896505b8487101561324d5761323981612d87565b835260019690960195918301918301613228565b5096505086013592505080821115613263578283fd5b5061327085828601612da3565b9150509250929050565b60006020828403121561328b578081fd5b5035919050565b600080604083850312156132a4578182fd5b82359150612eaf60208401612d87565b6000602082840312156132c5578081fd5b813561127581613789565b6000602082840312156132e1578081fd5b815161127581613789565b600080600080600080600060e0888a031215613306578485fd5b873567ffffffffffffffff8082111561331d578687fd5b6133298b838c01612e17565b985060208a0135975061333e60408b01612d87565b965060608a0135955060808a0135945060a08a0135935060c08a0135915080821115613368578283fd5b506133758a828b01612e17565b91505092959891949750929550565b600060208284031215613395578081fd5b813567ffffffffffffffff8111156133ab578182fd5b6133b784828501612e17565b949350505050565b6000815180845260208085019450808401835b838110156133ee578151875295820195908201906001016133d2565b509495945050505050565b600081518084526134118160208601602086016135f6565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161345d8160178501602088016135f6565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161349a8160288401602088016135f6565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a060408301526134d260a08301866133bf565b82810360608401526134e481866133bf565b905082810360808401526134f881856133f9565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261353c60a08301846133f9565b979650505050505050565b60208152600061127560208301846133bf565b60408152600061356d60408301856133bf565b828103602084015261357f81856133bf565b95945050505050565b60208152600061127560208301846133f9565b600067ffffffffffffffff8211156135b5576135b56136d2565b5060051b60200190565b600082198211156135d2576135d26136bc565b500190565b60008160001904831182151516156135f1576135f16136bc565b500290565b60005b838110156136115781810151838201526020016135f9565b83811115611cdc5750506000910152565b600081613631576136316136bc565b506000190190565b600181811c9082168061364d57607f821691505b6020821081141561366e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561369a5761369a6136d2565b6040525050565b60006000198214156136b5576136b56136bc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d111561256a57600481823e5160e01c90565b600060443d101561370d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561373d57505050505090565b82850191508151818111156137555750505050505090565b843d870101602082850101111561376f5750505050505090565b61377e60208286010187613674565b509095945050505050565b6001600160e01b031981168114610bcb57600080fdfea2646970667358221220481ed7f4a9df1abb5d262b42f8ffeb5f0d8c47ee2d8442ef924b1219e30f143864736f6c63430008040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B20C454 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B20C454 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x7F345710 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x63AC5D97 EQ PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x121DF247 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x121DF247 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x23A45C61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2FE5305 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x207 PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0x3101 JUMP JUMPDEST PUSH2 0x53E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x211 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x3384 JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST PUSH2 0x207 PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3032 JUMP JUMPDEST PUSH2 0x6D1 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x207 PUSH2 0x2CD CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x2F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EB8 JUMP JUMPDEST PUSH2 0xA5A JUMP JUMPDEST PUSH2 0x250 PUSH2 0x303 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x250 PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x31AF JUMP JUMPDEST PUSH2 0xBCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x3547 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x351 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x22D JUMP JUMPDEST PUSH2 0x207 PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH2 0xD44 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x315C JUMP JUMPDEST PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x207 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x3FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 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 PUSH2 0x250 PUSH2 0x433 CALLDATASIZE PUSH1 0x4 PUSH2 0x3384 JUMP JUMPDEST PUSH2 0xE37 JUMP JUMPDEST PUSH2 0x207 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0x30C7 JUMP JUMPDEST PUSH2 0xE74 JUMP JUMPDEST PUSH2 0x207 PUSH2 0x461 CALLDATASIZE PUSH1 0x4 PUSH2 0x327A JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x207 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3292 JUMP JUMPDEST PUSH2 0xE7F JUMP JUMPDEST PUSH2 0x207 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A DUP2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0xEA4 JUMP JUMPDEST PUSH2 0x22D PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2E86 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x250 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F5E JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x312A JUMP JUMPDEST PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F2 DUP3 PUSH2 0x127C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C PUSH2 0x622 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x62B DUP3 PUSH2 0x12C4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x64C SWAP1 PUSH2 0x3639 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 0x678 SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x69A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6C5 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 0x6A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x6FB DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 PUSH2 0x12D7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8A73F441CCFC90803A814E1B8136A6B47F18AEC294550D26966593EE7EF0E03C SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x799 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x14C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7A7 DUP3 DUP11 PUSH2 0x1531 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xFB3AFC54F817751654582FF74016652DF45DDCD07C58EB7F7F8C2365D03ECADF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x857 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865207472616E73666572726572207369676E207472616E7366 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572207061737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x8A6 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 0x5472616E73666572207061737320697320657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220706173732077617320616C726561647920757365640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x91E SWAP1 PUSH2 0x3639 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 0x94A SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x997 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x997 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 0x97A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP6 MLOAD PUSH2 0x9C7 SWAP3 DUP8 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP11 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH32 0xE202102CE42C14D1F73E60059DEF856F1B1BC2A387F48D1C61980BEFD84FE702 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH2 0xA4E SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x154D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xA76 JUMPI POP PUSH2 0xA76 DUP6 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xADA 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1670 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xB02 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 PUSH2 0x18F8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB8F 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 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x62B DUP3 DUP3 PUSH2 0x199A JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xBC3 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xBCB PUSH2 0x1A1D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xC47 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC71 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC9A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD3C JUMPI PUSH2 0xD01 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCCC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x53E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD21 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0xD35 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0xCA0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0xD60 JUMPI POP PUSH2 0xD60 DUP4 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xDC4 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 DUP4 PUSH2 0x1A6F JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xDF9 DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 PUSH2 0x154D JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xE2F DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xBCB PUSH2 0x1CE2 JUMP JUMPDEST PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH2 0xE61 DUP2 PUSH2 0x12BA JUMP JUMPDEST DUP2 MLOAD PUSH2 0xB0C SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST PUSH2 0x62B CALLER DUP4 DUP4 PUSH2 0x1D1F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xE9A DUP2 PUSH2 0x12BA JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 PUSH2 0x199A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0xEB3 SWAP1 PUSH2 0x3639 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 0xEDF SWAP1 PUSH2 0x3639 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF2C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF01 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF2C 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 0xF0F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xF52 JUMPI POP PUSH2 0xF52 DUP6 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xFB6 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x707 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1E14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0xFDF JUMPI POP PUSH2 0xFDF DUP4 CALLER PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x1043 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0xB0C DUP4 DUP4 DUP4 PUSH2 0x1FCD JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x105D DUP4 PUSH1 0x2 PUSH2 0x35D7 JUMP JUMPDEST PUSH2 0x1068 SWAP1 PUSH1 0x2 PUSH2 0x35BF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x108E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x10B8 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x10FD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1156 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x117A DUP5 PUSH1 0x2 PUSH2 0x35D7 JUMP JUMPDEST PUSH2 0x1185 SWAP1 PUSH1 0x1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1226 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x11D4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11F8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x121F DUP2 PUSH2 0x3622 JUMP JUMPDEST SWAP1 POP PUSH2 0x1188 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x1275 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 0x5B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x5F2 JUMPI POP PUSH2 0x5F2 DUP3 PUSH2 0x215D JUMP JUMPDEST PUSH2 0xBCB DUP2 CALLER PUSH2 0x21F8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x62B SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2CEE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1337 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1399 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH2 0x13A9 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1460 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x13D5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1400 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1448 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 SWAP1 POP PUSH2 0x1458 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x13AC JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x14B1 SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x707 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F2 PUSH2 0x14D5 PUSH2 0x2443 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1540 DUP6 DUP6 PUSH2 0x256D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xD3C DUP2 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15AD 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x15B9 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15C6 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x15D7 DUP4 PUSH1 0x0 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x1607 SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1667 DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2837 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x16D2 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1736 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH2 0x1745 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x188A JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1773 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x179F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x186F SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x1883 SWAP1 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1748 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x18DA SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x18F0 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x228E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH2 0x62B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 0x1956 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 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 PUSH2 0x1A25 PUSH2 0x2942 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER 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 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AD1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1B33 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1B56 DUP2 DUP6 PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1C73 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B84 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BB0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1C3C 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH2 0x1C6B DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1B59 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1CC4 SWAP3 SWAP2 SWAP1 PUSH2 0x355A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1CEA PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1A52 CALLER SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1DA7 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1E78 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1E84 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E91 DUP6 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x1EA1 DUP4 DUP10 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x1F25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x1F62 SWAP1 DUP5 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1FC2 DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2837 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x202F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x203B DUP5 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2048 DUP5 PUSH2 0x27DE JUMP JUMPDEST SWAP1 POP PUSH2 0x2068 DUP4 DUP8 PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x20E5 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x1667 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x21C0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x5F2 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 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 SLOAD PUSH1 0xFF AND PUSH2 0x62B JUMPI PUSH2 0x2236 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0x104E JUMP JUMPDEST PUSH2 0x2241 DUP4 PUSH1 0x20 PUSH2 0x104E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2252 SWAP3 SWAP2 SWAP1 PUSH2 0x3425 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x5B8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3588 JUMP JUMPDEST PUSH2 0x2280 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x18F0 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x22D2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x34A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x231C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2319 SWAP2 DUP2 ADD SWAP1 PUSH2 0x32D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x23D2 JUMPI PUSH2 0x2328 PUSH2 0x36E8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x2362 JUMPI POP PUSH2 0x233D PUSH2 0x36FF JUMP JUMPDEST DUP1 PUSH2 0x2348 JUMPI POP PUSH2 0x2364 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5B8 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1667 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x249C JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x24C6 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2598 DUP8 DUP3 DUP6 DUP6 PUSH2 0x2BAF JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x25D6 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x25CE JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x25C3 DUP7 DUP4 DUP4 PUSH2 0x2C9C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0x25D6 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 PUSH2 0x25FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2608 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x262A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2678 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 0x5B8 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x269A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x26E8 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 0x5B8 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x270A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2763 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 0x5B8 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2785 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0xBCB 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 0x5B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2826 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x18F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x287B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3504 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28C5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x28C2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x32D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28D1 JUMPI PUSH2 0x2328 PUSH2 0x36E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1667 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x2994 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2994 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 PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2A8C JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A8A JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A23 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2A4F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2A74 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2A83 SWAP1 POP DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x29FA JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x18F0 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1667 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2AC8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2AF4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x2B8C 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 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH2 0x2BA8 DUP2 PUSH2 0x36A1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2BE6 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x2C93 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2BFE JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2C0F JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x2C93 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 0x2C63 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 0x2C8C JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x2C93 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 PUSH2 0x2CD2 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x35BF JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE0 DUP8 DUP3 DUP9 DUP6 PUSH2 0x2BAF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2CFA SWAP1 PUSH2 0x3639 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2D1C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2D62 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2D35 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2D62 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2D62 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2D62 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2D47 JUMP JUMPDEST POP PUSH2 0x2D6E SWAP3 SWAP2 POP PUSH2 0x2D72 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2D6E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D73 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DB3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x2DC0 DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DCD DUP3 DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x2DEC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E0A JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2DEE JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E27 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E41 JUMPI PUSH2 0x2E41 PUSH2 0x36D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E58 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2E6C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E98 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2EA1 DUP4 PUSH2 0x2D87 JUMP JUMPDEST SWAP2 POP PUSH2 0x2EAF PUSH1 0x20 DUP5 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2ECF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2ED8 DUP7 PUSH2 0x2D87 JUMP JUMPDEST SWAP5 POP PUSH2 0x2EE6 PUSH1 0x20 DUP8 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2F02 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2F0E DUP10 DUP4 DUP11 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2F23 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2F2F DUP10 DUP4 DUP11 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2F44 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2F51 DUP9 DUP3 DUP10 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2F75 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2F7E DUP7 PUSH2 0x2D87 JUMP JUMPDEST SWAP5 POP PUSH2 0x2F8C PUSH1 0x20 DUP8 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2F51 DUP9 DUP3 DUP10 ADD PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FD5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2FDE DUP5 PUSH2 0x2D87 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FFA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3006 DUP8 DUP4 DUP9 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x301B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3028 DUP7 DUP3 DUP8 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3047 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3050 DUP6 PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x306C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3078 DUP9 DUP4 DUP10 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x308D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3099 DUP9 DUP4 DUP10 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30AE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30BB DUP8 DUP3 DUP9 ADD PUSH2 0x2E17 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 0x30D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30E2 DUP4 PUSH2 0x2D87 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x30F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3113 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x311C DUP4 PUSH2 0x2D87 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 0x313E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3147 DUP5 PUSH2 0x2D87 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3171 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x317A DUP6 PUSH2 0x2D87 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30BB DUP8 DUP3 DUP9 ADD PUSH2 0x2E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x31C1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31D8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x31EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x31F8 DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3205 DUP3 DUP3 PUSH2 0x3674 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x3224 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x324D JUMPI PUSH2 0x3239 DUP2 PUSH2 0x2D87 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x3228 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3263 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3270 DUP6 DUP3 DUP7 ADD PUSH2 0x2DA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x328B JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32A4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2EAF PUSH1 0x20 DUP5 ADD PUSH2 0x2D87 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1275 DUP2 PUSH2 0x3789 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32E1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1275 DUP2 PUSH2 0x3789 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3306 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x331D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x3329 DUP12 DUP4 DUP13 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x333E PUSH1 0x40 DUP12 ADD PUSH2 0x2D87 JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3368 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3375 DUP11 DUP3 DUP12 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3395 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x33B7 DUP5 DUP3 DUP6 ADD PUSH2 0x2E17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x33EE JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x33D2 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3411 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x35F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x345D DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x35F6 JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x349A DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x35F6 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x34D2 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x33BF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x34E4 DUP2 DUP7 PUSH2 0x33BF JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x34F8 DUP2 DUP6 PUSH2 0x33F9 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x353C PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x33F9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1275 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x33BF JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x356D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x33BF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x357F DUP2 DUP6 PUSH2 0x33BF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1275 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x33F9 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x35B5 JUMPI PUSH2 0x35B5 PUSH2 0x36D2 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x35D2 JUMPI PUSH2 0x35D2 PUSH2 0x36BC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x35F1 JUMPI PUSH2 0x35F1 PUSH2 0x36BC JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1CDC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3631 JUMPI PUSH2 0x3631 PUSH2 0x36BC JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x364D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x366E 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x369A JUMPI PUSH2 0x369A PUSH2 0x36D2 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x36B5 JUMPI PUSH2 0x36B5 PUSH2 0x36BC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x256A JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x370D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x373D JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3755 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x376F JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x377E PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x3674 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 0x1E 0xD7 DELEGATECALL 0xA9 0xDF BYTE 0xBB 0x5D 0x26 0x2B TIMESTAMP 0xF8 SELFDESTRUCT 0xEB 0x5F 0xD DUP13 SELFBALANCE 0xEE 0x2D DUP5 TIMESTAMP 0xEF SWAP3 0x4B SLT NOT 0xE3 0xF EQ CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ",
              "sourceMap": "529:3877:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227:4;;;;;;:::i;:::-;;:::i;:::-;;;15024:25:20;;;15012:2;14997:18;2185:227:4;;;;;;;;4243:161:18;;;;;;:::i;:::-;;:::i;:::-;;;14851:14:20;;14844:22;14826:41;;14814:2;14799:18;4243:161:18;14781:92:20;1792:97:18;;;;;;:::i;:::-;;:::i;:::-;;1669:105;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;707:88::-;;758:37;707:88;;2426:192;;;;;;:::i;:::-;;:::i;2622:1245::-;;;;;;:::i;:::-;;:::i;4391:129:0:-;;;;;;:::i;:::-;4465:7;4491:12;;;:6;:12;;;;;:22;;;;4391:129;4065:427:4;;;;;;:::i;:::-;;:::i;4816:145:0:-;;;;;;:::i;:::-;;:::i;5925:214::-;;;;;;:::i;:::-;;:::i;2179:69:18:-;;;:::i;2569:508:4:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;901:120:8:-;;;;;;:::i;:::-;958:4;785:16;;;:12;:16;;;;;;-1:-1:-1;;;901:120:8;1615:84:3;1685:7;;;;1615:84;;931:72:18;;974:29;931:72;;730:348:7;;;;;;:::i;:::-;;:::i;2252:170:18:-;;;;;;:::i;:::-;;:::i;633:70::-;;675:28;633:70;;2110:65;;;:::i;2895:145:0:-;;;;;;:::i;:::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;;;;2895:145;1986:120:18;;;;;;:::i;:::-;;:::i;2027:49:0:-;;2072:4;2027:49;;3145:153:4;;;;;;:::i;:::-;;:::i;697:111:8:-;;;;;;:::i;:::-;759:7;785:16;;;:12;:16;;;;;;;697:111;865:62:18;;903:24;865:62;;5241:147:0;;;;;;:::i;:::-;;:::i;799:62:18:-;;837:24;799:62;;1893:89;;;:::i;3365:166:4:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3487:27:4;;;3464:4;3487:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3365:166;3598:395;;;;;;:::i;:::-;;:::i;408:316:7:-;;;;;;:::i;:::-;;:::i;2185:227:4:-;2271:7;-1:-1:-1;;;;;2298:21:4;;2290:76;;;;-1:-1:-1;;;2290:76:4;;20141:2:20;2290:76:4;;;20123:21:20;20180:2;20160:18;;;20153:30;20219:34;20199:18;;;20192:62;20290:12;20270:18;;;20263:40;20320:19;;2290:76:4;;;;;;;;;-1:-1:-1;2383:9:4;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:4;;;;;;;;;;;;2185:227::o;4243:161:18:-;4344:4;4363:36;4387:11;4363:23;:36::i;:::-;4356:43;4243:161;-1:-1:-1;;4243:161:18:o;1792:97::-;675:28;2505:16:0;2516:4;2505:10;:16::i;:::-;1869:15:18::1;1877:6;1869:7;:15::i;:::-;1792:97:::0;;:::o;1669:105::-;1760:9;;;;:5;:9;;;;;1753:16;;1732:13;;1760:9;1753:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:105;;;:::o;2426:192::-;903:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2579:34:18::1;2590:2;2594:3;2599:7;2608:4;2579:10;:34::i;:::-;2426:192:::0;;;;;:::o;2622:1245::-;3153:24;;;;;;;;;;2888:299;;;2910:140;2888:299;;;15892:25:20;;;;15933:18;;15926:34;;;-1:-1:-1;;;;;15996:55:20;;15976:18;;;15969:83;16068:18;;;16061:34;;;16111:19;;;16104:35;;;16155:19;;;16148:35;;;16199:19;;;16192:35;2828:14:18;;2845:356;;15864:19:20;;2888:299:18;;;;;;;;;;;;2869:326;;;;;;2845:16;:356::i;:::-;2828:373;;3207:23;3233:32;3247:6;3255:9;3233:13;:32::i;:::-;-1:-1:-1;;;;;3004:29:0;;2981:4;3004:29;;;:12;;:29;:12;:29;;;3207:58:18;;-1:-1:-1;3004:29:0;;3271:94:18;;;;-1:-1:-1;;;3271:94:18;;26092:2:20;3271:94:18;;;26074:21:20;26131:2;26111:18;;;26104:30;26170:34;26150:18;;;26143:62;26241:9;26221:18;;;26214:37;26268:19;;3271:94:18;26064:229:20;3271:94:18;3397:10;3379:15;:28;3371:65;;;;-1:-1:-1;;;3371:65:18;;20955:2:20;3371:65:18;;;20937:21:20;20994:2;20974:18;;;20967:30;21033:26;21013:18;;;21006:54;21077:18;;3371:65:18;20927:174:20;3371:65:18;3451:20;;;;:12;:20;;;;;;;;3450:21;3442:64;;;;-1:-1:-1;;;3442:64:18;;23686:2:20;3442:64:18;;;23668:21:20;23725:2;23705:18;;;23698:30;23764:32;23744:18;;;23737:60;23814:18;;3442:64:18;23658:180:20;3442:64:18;3622:21;3652:9;;;:5;:9;;;;;3622:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3672:8;:15;3691:1;3672:20;3668:59;;;3702:9;;;;:5;:9;;;;;;;;:18;;;;;;;;:::i;:::-;;3668:59;3738:53;;;26711:25:20;;;-1:-1:-1;;;;;26772:55:20;;26767:2;26752:18;;26745:83;26844:18;;;26837:34;;;26902:2;26887:18;;26880:34;;;3738:53:18;;26698:3:20;26683:19;3738:53:18;;;;;;;3798:20;;;;:12;:20;;;;;;;;:27;;-1:-1:-1;;3798:27:18;3821:4;3798:27;;;3832:30;;;;;;;;;;;;3838:7;;3847:2;;3851:6;;3832:5;:30::i;:::-;2622:1245;;;;;;;;;;:::o;4065:427:4:-;-1:-1:-1;;;;;4290:20:4;;719:10:12;4290:20:4;;:60;;-1:-1:-1;4314:36:4;4331:4;719:10:12;3365:166:4;:::i;4314:36::-;4269:154;;;;-1:-1:-1;;;4269:154:4;;17841:2:20;4269:154:4;;;17823:21:20;17880:2;17860:18;;;17853:30;17919:34;17899:18;;;17892:62;-1:-1:-1;;;17970:18:20;;;17963:45;18025:19;;4269:154:4;17813:237:20;4269:154:4;4433:52;4456:4;4462:2;4466:3;4471:7;4480:4;4433:22;:52::i;4816:145:0:-;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4929:25:::1;4940:4;4946:7;4929:10;:25::i;:::-;4816:145:::0;;;:::o;5925:214::-;-1:-1:-1;;;;;6020:23:0;;719:10:12;6020:23:0;6012:83;;;;-1:-1:-1;;;6012:83:0;;25676:2:20;6012:83:0;;;25658:21:20;25715:2;25695:18;;;25688:30;25754:34;25734:18;;;25727:62;25825:17;25805:18;;;25798:45;25860:19;;6012:83:0;25648:237:20;6012:83:0;6106:26;6118:4;6124:7;6106:11;:26::i;2179:69:18:-;837:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2233:10:18::1;:8;:10::i;:::-;2179:69:::0;:::o;2569:508:4:-;2720:16;2779:3;:10;2760:8;:15;:29;2752:83;;;;-1:-1:-1;;;2752:83:4;;24455:2:20;2752:83:4;;;24437:21:20;24494:2;24474:18;;;24467:30;24533:34;24513:18;;;24506:62;24604:11;24584:18;;;24577:39;24633:19;;2752:83:4;24427:231:20;2752:83:4;2846:30;2893:8;:15;2879:30;;;;;;-1:-1:-1;;;2879:30:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2879:30:4;;2846:63;;2925:9;2920:120;2944:8;:15;2940:1;:19;2920:120;;;2999:30;3009:8;3018:1;3009:11;;;;;;-1:-1:-1;;;3009:11:4;;;;;;;;;;;;;;;3022:3;3026:1;3022:6;;;;;;-1:-1:-1;;;3022:6:4;;;;;;;;;;;;;;;2999:9;:30::i;:::-;2980:13;2994:1;2980:16;;;;;;-1:-1:-1;;;2980:16:4;;;;;;;;;;;;;;;;;;:49;2961:3;;;:::i;:::-;;;2920:120;;;-1:-1:-1;3057:13:4;2569:508;-1:-1:-1;;;2569:508:4:o;730:348:7:-;-1:-1:-1;;;;;889:23:7;;719:10:12;889:23:7;;:66;;-1:-1:-1;916:39:7;933:7;719:10:12;3365:166:4;:::i;916:39:7:-;868:160;;;;-1:-1:-1;;;868:160:7;;17841:2:20;868:160:7;;;17823:21:20;17880:2;17860:18;;;17853:30;17919:34;17899:18;;;17892:62;-1:-1:-1;;;17970:18:20;;;17963:45;18025:19;;868:160:7;17813:237:20;868:160:7;1039:32;1050:7;1059:3;1064:6;1039:10;:32::i;2252:170:18:-;903:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2385:32:18::1;2391:7;2400:2;2404:6;2412:4;2385:5;:32::i;2110:65::-:0;837:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2162:8:18::1;:6;:8::i;1986:120::-:0;758:37;2505:16:0;2516:4;2505:10;:16::i;:::-;2080:21:18;;::::1;::::0;:12:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;3145:153:4:-:0;3239:52;719:10:12;3272:8:4;3282;3239:18;:52::i;5241:147:0:-;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5355:26:::1;5367:4;5373:7;5355:11;:26::i;1893:89:18:-:0;1937:13;1965:12;1958:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1893:89;:::o;3598:395:4:-;-1:-1:-1;;;;;3798:20:4;;719:10:12;3798:20:4;;:60;;-1:-1:-1;3822:36:4;3839:4;719:10:12;3365:166:4;:::i;3822:36::-;3777:154;;;;-1:-1:-1;;;3777:154:4;;17841:2:20;3777:154:4;;;17823:21:20;17880:2;17860:18;;;17853:30;17919:34;17899:18;;;17892:62;-1:-1:-1;;;17970:18:20;;;17963:45;18025:19;;3777:154:4;17813:237:20;3777:154:4;3941:45;3959:4;3965:2;3969;3973:6;3981:4;3941:17;:45::i;408:316:7:-;-1:-1:-1;;;;;542:23:7;;719:10:12;542:23:7;;:66;;-1:-1:-1;569:39:7;586:7;719:10:12;3365:166:4;:::i;569:39:7:-;521:160;;;;-1:-1:-1;;;521:160:7;;17841:2:20;521:160:7;;;17823:21:20;17880:2;17860:18;;;17853:30;17919:34;17899:18;;;17892:62;-1:-1:-1;;;17970:18:20;;;17963:45;18025:19;;521:160:7;17813:237:20;521:160:7;692:25;698:7;707:2;711:5;692;:25::i;1652:441:13:-;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;1774:25;;;;;;-1:-1:-1;;;1774:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:13;;1752:47;;1809:15;:6;1816:1;1809:9;;;;;;-1:-1:-1;;;1809:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1809:15:13;;;;;;;;;1834;:6;1841:1;1834:9;;;;;;-1:-1:-1;;;1834:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1834:15:13;;;;;;;;-1:-1:-1;1864:9:13;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;1930:12;1943:5;1951:3;1943:11;1930:25;;;;;-1:-1:-1;;;1930:25:13;;;;;;;;;;;;1918:6;1925:1;1918:9;;;;;;-1:-1:-1;;;1918:9:13;;;;;;;;;;;;:37;-1:-1:-1;;;;;1918:37:13;;;;;;;;-1:-1:-1;1979:1:13;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:13;;2000:55;;;;-1:-1:-1;;;2000:55:13;;18257:2:20;2000:55:13;;;18239:21:20;;;18276:18;;;18269:30;18335:34;18315:18;;;18308:62;18387:18;;2000:55:13;18229:182:20;2000:55:13;2079:6;1652:441;-1:-1:-1;;;1652:441:13:o;2606:202:0:-;2691:4;-1:-1:-1;;;;;;2714:47:0;;2729:32;2714:47;;:87;;;2765:36;2789:11;2765:23;:36::i;3334:103::-;3400:30;3411:4;719:10:12;3400::0;:30::i;8173:86:4:-;8239:13;;;;:4;;:13;;;;;:::i;9731:791::-;-1:-1:-1;;;;;9903:16:4;;9895:62;;;;-1:-1:-1;;;9895:62:4;;25274:2:20;9895:62:4;;;25256:21:20;25313:2;25293:18;;;25286:30;25352:34;25332:18;;;25325:62;-1:-1:-1;;;25403:18:20;;;25396:31;25444:19;;9895:62:4;25246:223:20;9895:62:4;9989:7;:14;9975:3;:10;:28;9967:81;;;;-1:-1:-1;;;9967:81:4;;24865:2:20;9967:81:4;;;24847:21:20;24904:2;24884:18;;;24877:30;24943:34;24923:18;;;24916:62;-1:-1:-1;;;24994:18:20;;;24987:38;25042:19;;9967:81:4;24837:230:20;9967:81:4;719:10:12;10101:66:4;719:10:12;10059:16:4;10144:2;10148:3;10153:7;10162:4;10101:20;:66::i;:::-;10183:9;10178:101;10202:3;:10;10198:1;:14;10178:101;;;10258:7;10266:1;10258:10;;;;;;-1:-1:-1;;;10258:10:4;;;;;;;;;;;;;;;10233:9;:17;10243:3;10247:1;10243:6;;;;;;-1:-1:-1;;;10243:6:4;;;;;;;;;;;;;;;10233:17;;;;;;;;;;;:21;10251:2;-1:-1:-1;;;;;10233:21:4;-1:-1:-1;;;;;10233:21:4;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;10214:3:4;;-1:-1:-1;10214:3:4;;;:::i;:::-;;;;10178:101;;;;10330:2;-1:-1:-1;;;;;10294:53:4;10326:1;-1:-1:-1;;;;;10294:53:4;10308:8;-1:-1:-1;;;;;10294:53:4;;10334:3;10339:7;10294:53;;;;;;;:::i;:::-;;;;;;;;10434:81;10470:8;10488:1;10492:2;10496:3;10501:7;10510:4;10434:35;:81::i;4339:165:15:-;4416:7;4442:55;4464:20;:18;:20::i;:::-;4486:10;9320:57:14;;11307:66:20;9320:57:14;;;11295:79:20;11390:11;;;11383:27;;;11426:12;;;11419:28;;;9284:7:14;;11463:12:20;;9320:57:14;;;;;;;;;;;;9310:68;;;;;;9303:75;;9191:194;;;;;4402:227;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;8632:709:4:-;-1:-1:-1;;;;;8779:16:4;;8771:62;;;;-1:-1:-1;;;8771:62:4;;25274:2:20;8771:62:4;;;25256:21:20;25313:2;25293:18;;;25286:30;25352:34;25332:18;;;25325:62;-1:-1:-1;;;25403:18:20;;;25396:31;25444:19;;8771:62:4;25246:223:20;8771:62:4;719:10:12;8844:16:4;8908:21;8926:2;8908:17;:21::i;:::-;8885:44;;8939:24;8966:25;8984:6;8966:17;:25::i;:::-;8939:52;;9002:66;9023:8;9041:1;9045:2;9049:3;9054:7;9063:4;9002:20;:66::i;:::-;9079:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9079:17:4;;;;;;;;;:27;;9100:6;;9079:9;:27;;9100:6;;9079:27;:::i;:::-;;;;-1:-1:-1;;9121:52:4;;;27099:25:20;;;27155:2;27140:18;;27133:34;;;-1:-1:-1;;;;;9121:52:4;;;;9154:1;;9121:52;;;;;;27072:18:20;9121:52:4;;;;;;;9260:74;9291:8;9309:1;9313:2;9317;9321:6;9329:4;9260:30;:74::i;:::-;8632:709;;;;;;;:::o;6235:1115::-;6455:7;:14;6441:3;:10;:28;6433:81;;;;-1:-1:-1;;;6433:81:4;;24865:2:20;6433:81:4;;;24847:21:20;24904:2;24884:18;;;24877:30;24943:34;24923:18;;;24916:62;-1:-1:-1;;;24994:18:20;;;24987:38;25042:19;;6433:81:4;24837:230:20;6433:81:4;-1:-1:-1;;;;;6532:16:4;;6524:66;;;;-1:-1:-1;;;6524:66:4;;21653:2:20;6524:66:4;;;21635:21:20;21692:2;21672:18;;;21665:30;21731:34;21711:18;;;21704:62;-1:-1:-1;;;21782:18:20;;;21775:35;21827:19;;6524:66:4;21625:227:20;6524:66:4;719:10:12;6643:60:4;719:10:12;6674:4:4;6680:2;6684:3;6689:7;6698:4;6643:20;:60::i;:::-;6719:9;6714:411;6738:3;:10;6734:1;:14;6714:411;;;6769:10;6782:3;6786:1;6782:6;;;;;;-1:-1:-1;;;6782:6:4;;;;;;;;;;;;;;;6769:19;;6802:14;6819:7;6827:1;6819:10;;;;;;-1:-1:-1;;;6819:10:4;;;;;;;;;;;;;;;;;;;;6844:19;6866:13;;;;;;;;;;-1:-1:-1;;;;;6866:19:4;;;;;;;;;;;;6819:10;;-1:-1:-1;6907:21:4;;;;6899:76;;;;-1:-1:-1;;;6899:76:4;;22866:2:20;6899:76:4;;;22848:21:20;22905:2;22885:18;;;22878:30;22944:34;22924:18;;;22917:62;-1:-1:-1;;;22995:18:20;;;22988:40;23045:19;;6899:76:4;22838:232:20;6899:76:4;7017:9;:13;;;;;;;;;;;-1:-1:-1;;;;;7017:19:4;;;;;;;;;;7039:20;;;7017:42;;7087:17;;;;;;;:27;;7039:20;;7017:9;7087:27;;7039:20;;7087:27;:::i;:::-;;;;;;;;6714:411;;;6750:3;;;;:::i;:::-;;;6714:411;;;;7170:2;-1:-1:-1;;;;;7140:47:4;7164:4;-1:-1:-1;;;;;7140:47:4;7154:8;-1:-1:-1;;;;;7140:47:4;;7174:3;7179:7;7140:47;;;;;;;:::i;:::-;;;;;;;;7268:75;7304:8;7314:4;7320:2;7324:3;7329:7;7338:4;7268:35;:75::i;:::-;6235:1115;;;;;;:::o;7474:233:0:-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7552:149;;7595:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7595:29:0;;;;;;;;;:36;;-1:-1:-1;;7595:36:0;7627:4;7595:36;;;7677:12;719:10:12;;640:96;7677:12:0;-1:-1:-1;;;;;7650:40:0;7668:7;-1:-1:-1;;;;;7650:40:0;7662:4;7650:40;;;;;;;;;;7474:233;;:::o;7878:234::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7957:149;;;8031:5;7999:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7999:29:0;;;;;;;;;;:37;;-1:-1:-1;;7999:37:0;;;8055:40;719:10:12;;7999:12:0;;8055:40;;8031:5;8055:40;7878:234;;:::o;2433:117:3:-;1486:16;:14;:16::i;:::-;2491:7:::1;:15:::0;;-1:-1:-1;;2491:15:3::1;::::0;;2521:22:::1;719:10:12::0;2530:12:3::1;2521:22;::::0;-1:-1:-1;;;;;12441:55:20;;;12423:74;;12411:2;12396:18;2521:22:3::1;;;;;;;2433:117::o:0;11833:943:4:-;-1:-1:-1;;;;;11980:18:4;;11972:66;;;;-1:-1:-1;;;11972:66:4;;22462:2:20;11972:66:4;;;22444:21:20;22501:2;22481:18;;;22474:30;22540:34;22520:18;;;22513:62;-1:-1:-1;;;22591:18:20;;;22584:33;22634:19;;11972:66:4;22434:225:20;11972:66:4;12070:7;:14;12056:3;:10;:28;12048:81;;;;-1:-1:-1;;;12048:81:4;;24865:2:20;12048:81:4;;;24847:21:20;24904:2;24884:18;;;24877:30;24943:34;24923:18;;;24916:62;-1:-1:-1;;;24994:18:20;;;24987:38;25042:19;;12048:81:4;24837:230:20;12048:81:4;12140:16;719:10:12;12140:31:4;;12182:66;12203:8;12213:4;12227:1;12231:3;12236:7;12182:66;;;;;;;;;;;;:20;:66::i;:::-;12264:9;12259:364;12283:3;:10;12279:1;:14;12259:364;;;12314:10;12327:3;12331:1;12327:6;;;;;;-1:-1:-1;;;12327:6:4;;;;;;;;;;;;;;;12314:19;;12347:14;12364:7;12372:1;12364:10;;;;;;-1:-1:-1;;;12364:10:4;;;;;;;;;;;;;;;;;;;;12389:19;12411:13;;;;;;;;;;-1:-1:-1;;;;;12411:19:4;;;;;;;;;;;;12364:10;;-1:-1:-1;12452:21:4;;;;12444:70;;;;-1:-1:-1;;;12444:70:4;;19736:2:20;12444:70:4;;;19718:21:20;19775:2;19755:18;;;19748:30;19814:34;19794:18;;;19787:62;-1:-1:-1;;;19865:18:20;;;19858:34;19909:19;;12444:70:4;19708:226:20;12444:70:4;12556:9;:13;;;;;;;;;;;-1:-1:-1;;;;;12556:19:4;;;;;;;;;;12578:20;;12556:42;;12295:3;;;;:::i;:::-;;;;12259:364;;;;12676:1;-1:-1:-1;;;;;12638:55:4;12662:4;-1:-1:-1;;;;;12638:55:4;12652:8;-1:-1:-1;;;;;12638:55:4;;12680:3;12685:7;12638:55;;;;;;;:::i;:::-;;;;;;;;12704:65;;;;;;;;;12748:1;12704:65;;;11833:943;;;;:::o;2186:115:3:-;1239:19;:17;:19::i;:::-;2245:7:::1;:14:::0;;-1:-1:-1;;2245:14:3::1;2255:4;2245:14;::::0;;2274:20:::1;2281:12;719:10:12::0;;640:96;12912:323:4;13062:8;-1:-1:-1;;;;;13053:17:4;:5;-1:-1:-1;;;;;13053:17:4;;;13045:71;;;;-1:-1:-1;;;13045:71:4;;24045:2:20;13045:71:4;;;24027:21:20;24084:2;24064:18;;;24057:30;24123:34;24103:18;;;24096:62;24194:11;24174:18;;;24167:39;24223:19;;13045:71:4;24017:231:20;13045:71:4;-1:-1:-1;;;;;13126:25:4;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13126:46:4;;;;;;;;;;13187:41;;14826::20;;;13187::4;;14799:18:20;13187:41:4;;;;;;;12912:323;;;:::o;4942:947::-;-1:-1:-1;;;;;5123:16:4;;5115:66;;;;-1:-1:-1;;;5115:66:4;;21653:2:20;5115:66:4;;;21635:21:20;21692:2;21672:18;;;21665:30;21731:34;21711:18;;;21704:62;-1:-1:-1;;;21782:18:20;;;21775:35;21827:19;;5115:66:4;21625:227:20;5115:66:4;719:10:12;5192:16:4;5256:21;5274:2;5256:17;:21::i;:::-;5233:44;;5287:24;5314:25;5332:6;5314:17;:25::i;:::-;5287:52;;5350:60;5371:8;5381:4;5387:2;5391:3;5396:7;5405:4;5350:20;:60::i;:::-;5421:19;5443:13;;;;;;;;;;;-1:-1:-1;;;;;5443:19:4;;;;;;;;;;5480:21;;;;5472:76;;;;-1:-1:-1;;;5472:76:4;;22866:2:20;5472:76:4;;;22848:21:20;22905:2;22885:18;;;22878:30;22944:34;22924:18;;;22917:62;-1:-1:-1;;;22995:18:20;;;22988:40;23045:19;;5472:76:4;22838:232:20;5472:76:4;5582:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5582:19:4;;;;;;;;;;5604:20;;;5582:42;;5644:17;;;;;;;:27;;5604:20;;5582:9;5644:27;;5604:20;;5644:27;:::i;:::-;;;;-1:-1:-1;;5687:46:4;;;27099:25:20;;;27155:2;27140:18;;27133:34;;;-1:-1:-1;;;;;5687:46:4;;;;;;;;;;;;;;27072:18:20;5687:46:4;;;;;;;5814:68;5845:8;5855:4;5861:2;5865;5869:6;5877:4;5814:30;:68::i;:::-;4942:947;;;;;;;;;:::o;10808:786::-;-1:-1:-1;;;;;10930:18:4;;10922:66;;;;-1:-1:-1;;;10922:66:4;;22462:2:20;10922:66:4;;;22444:21:20;22501:2;22481:18;;;22474:30;22540:34;22520:18;;;22513:62;-1:-1:-1;;;22591:18:20;;;22584:33;22634:19;;10922:66:4;22434:225:20;10922:66:4;719:10:12;10999:16:4;11063:21;11081:2;11063:17;:21::i;:::-;11040:44;;11094:24;11121:25;11139:6;11121:17;:25::i;:::-;11094:52;;11157:66;11178:8;11188:4;11202:1;11206:3;11211:7;11157:66;;;;;;;;;;;;:20;:66::i;:::-;11234:19;11256:13;;;;;;;;;;;-1:-1:-1;;;;;11256:19:4;;;;;;;;;;11293:21;;;;11285:70;;;;-1:-1:-1;;;11285:70:4;;19736:2:20;11285:70:4;;;19718:21:20;19775:2;19755:18;;;19748:30;19814:34;19794:18;;;19787:62;-1:-1:-1;;;19865:18:20;;;19858:34;19909:19;;11285:70:4;19708:226:20;11285:70:4;11389:9;:13;;;;;;;;;;;-1:-1:-1;;;;;11389:19:4;;;;;;;;;;;;11411:20;;;11389:42;;11457:54;;27099:25:20;;;27140:18;;;27133:34;;;11389:19:4;;11457:54;;;;;;27072:18:20;11457:54:4;;;;;;;11522:65;;;;;;;;;11566:1;11522:65;;;6235:1115;1236:305;1338:4;-1:-1:-1;;;;;;1373:41:4;;1388:26;1373:41;;:109;;-1:-1:-1;;;;;;;1430:52:4;;1445:37;1430:52;1373:109;:161;;;-1:-1:-1;952:25:16;-1:-1:-1;;;;;;937:40:16;;;1498:36:4;829:155:16;3718:492:0;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;3801:403;;3989:41;4017:7;-1:-1:-1;;;;;3989:41:0;4027:2;3989:19;:41::i;:::-;4101:38;4129:4;4136:2;4101:19;:38::i;:::-;3896:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:265:0;;;;;;;;;;-1:-1:-1;;;3844:349:0;;;;;;;:::i;3871:302:18:-;1239:19:3;:17;:19::i;:::-;4102:66:18::1;4129:8;4139:4;4145:2;4149:3;4154:7;4163:4;4102:26;:66::i;16268:792:4:-:0;-1:-1:-1;;;;;16500:13:4;;1465:19:11;:23;16496:558:4;;16535:79;;-1:-1:-1;;;16535:79:4;;-1:-1:-1;;;;;16535:43:4;;;;;:79;;16579:8;;16589:4;;16595:3;;16600:7;;16609:4;;16535:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16535:79:4;;;;;;;;-1:-1:-1;;16535:79:4;;;;;;;;;;;;:::i;:::-;;;16531:513;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16920:6;16913:14;;-1:-1:-1;;;16913:14:4;;;;;;;;:::i;16531:513::-;;;16967:62;;-1:-1:-1;;;16967:62:4;;17420:2:20;16967:62:4;;;17402:21:20;17459:2;17439:18;;;17432:30;17498:34;17478:18;;;17471:62;17569:22;17549:18;;;17542:50;17609:19;;16967:62:4;17392:242:20;16531:513:4;-1:-1:-1;;;;;;16693:60:4;;-1:-1:-1;;;16693:60:4;16689:157;;16777:50;;-1:-1:-1;;;16777:50:4;;18618:2:20;16777:50:4;;;18600:21:20;18657:2;18637:18;;;18630:30;18696:34;18676:18;;;18669:62;-1:-1:-1;;;18747:18:20;;;18740:38;18795:19;;16777:50:4;18590:230:20;3143:308:15;3196:7;3227:4;-1:-1:-1;;;;;3236:12:15;3219:29;;:66;;;;;3269:16;3252:13;:33;3219:66;3215:230;;;-1:-1:-1;3308:24:15;;3143:308::o;3215:230::-;-1:-1:-1;3633:73:15;;;3392:10;3633:73;;;;15319:25:20;;;;3404:12:15;15360:18:20;;;15353:34;3418:15:15;15403:18:20;;;15396:34;3677:13:15;15446:18:20;;;15439:34;3700:4:15;15489:19:20;;;;15482:84;;;;3633:73:15;;;;;;;;;;15291:19:20;;;;3633:73:15;;;3623:84;;;;;;3143:308::o;3215:230::-;3143:308;:::o;2243:1373:14:-;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:14;;-1:-1:-1;3563:35:14;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;-1:-1:-1;;;616:29:14;;;;;;;;;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;-1:-1:-1;;;712:38:14;;;;;;;;;;708:465;;;766:34;;-1:-1:-1;;;766:34:14;;17067:2:20;766:34:14;;;17049:21:20;17106:2;17086:18;;;17079:30;17145:26;17125:18;;;17118:54;17189:18;;766:34:14;17039:174:20;708:465:14;830:35;821:5;:44;;;;;;-1:-1:-1;;;821:44:14;;;;;;;;;;817:356;;;881:41;;-1:-1:-1;;;881:41:14;;19376:2:20;881:41:14;;;19358:21:20;19415:2;19395:18;;;19388:30;19454:33;19434:18;;;19427:61;19505:18;;881:41:14;19348:181:20;817:356:14;952:30;943:5;:39;;;;;;-1:-1:-1;;;943:39:14;;;;;;;;;;939:234;;;998:44;;-1:-1:-1;;;998:44:14;;20552:2:20;998:44:14;;;20534:21:20;20591:2;20571:18;;;20564:30;20630:34;20610:18;;;20603:62;-1:-1:-1;;;20681:18:20;;;20674:32;20723:19;;998:44:14;20524:224:20;939:234:14;1072:30;1063:5;:39;;;;;;-1:-1:-1;;;1063:39:14;;;;;;;;;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:14;;22059:2:20;1118:44:14;;;22041:21:20;22098:2;22078:18;;;22071:30;22137:34;22117:18;;;22110:62;-1:-1:-1;;;22188:18:20;;;22181:32;22230:19;;1118:44:14;22031:224:20;17066:193:4;17185:16;;;17199:1;17185:16;;;;;;;;;17132;;17160:22;;17185:16;;;;;;;;;;;;-1:-1:-1;17185:16:4;17160:41;;17222:7;17211:5;17217:1;17211:8;;;;;;-1:-1:-1;;;17211:8:4;;;;;;;;;;;;;;;;;;:18;17247:5;17066:193;-1:-1:-1;;17066:193:4:o;15537:725::-;-1:-1:-1;;;;;15744:13:4;;1465:19:11;:23;15740:516:4;;15779:72;;-1:-1:-1;;;15779:72:4;;-1:-1:-1;;;;;15779:38:4;;;;;:72;;15818:8;;15828:4;;15834:2;;15838:6;;15846:4;;15779:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15779:72:4;;;;;;;;-1:-1:-1;;15779:72:4;;;;;;;;;;;;:::i;:::-;;;15775:471;;;;:::i;:::-;-1:-1:-1;;;;;;15900:55:4;;-1:-1:-1;;;15900:55:4;15896:152;;15979:50;;-1:-1:-1;;;15979:50:4;;18618:2:20;15979:50:4;;;18600:21:20;18657:2;18637:18;;;18630:30;18696:34;18676:18;;;18669:62;-1:-1:-1;;;18747:18:20;;;18740:38;18795:19;;15979:50:4;18590:230:20;1945:106:3;1685:7;;;;2003:41;;;;-1:-1:-1;;;2003:41:3;;19027:2:20;2003:41:3;;;19009:21:20;19066:2;19046:18;;;19039:30;19105:22;19085:18;;;19078:50;19145:18;;2003:41:3;18999:170:20;2003:41:3;1945:106::o;1767:::-;1685:7;;;;1836:9;1828:38;;;;-1:-1:-1;;;1828:38:3;;21308:2:20;1828:38:3;;;21290:21:20;21347:2;21327:18;;;21320:30;21386:18;21366;;;21359:46;21422:18;;1828:38:3;21280:166:20;1091:904:8;-1:-1:-1;;;;;1403:18:8;;1399:156;;1442:9;1437:108;1461:3;:10;1457:1;:14;1437:108;;;1520:7;1528:1;1520:10;;;;;;-1:-1:-1;;;1520:10:8;;;;;;;;;;;;;;;1496:12;:20;1509:3;1513:1;1509:6;;;;;;-1:-1:-1;;;1509:6:8;;;;;;;;;;;;;;;1496:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1473:3:8;;-1:-1:-1;1473:3:8;;:::i;:::-;;;1437:108;;;;1399:156;-1:-1:-1;;;;;1569:16:8;;1565:424;;1606:9;1601:378;1625:3;:10;1621:1;:14;1601:378;;;1660:10;1673:3;1677:1;1673:6;;;;;;-1:-1:-1;;;1673:6:8;;;;;;;;;;;;;;;1660:19;;1697:14;1714:7;1722:1;1714:10;;;;;;-1:-1:-1;;;1714:10:8;;;;;;;;;;;;;;;1697:27;;1742:14;1759:12;:16;1772:2;1759:16;;;;;;;;;;;;1742:33;;1811:6;1801;:16;;1793:69;;;;-1:-1:-1;;;1793:69:8;;23277:2:20;1793:69:8;;;23259:21:20;23316:2;23296:18;;;23289:30;23355:34;23335:18;;;23328:62;23426:10;23406:18;;;23399:38;23454:19;;1793:69:8;23249:230:20;1793:69:8;1912:16;;;;:12;:16;;;;;;1931:15;;1912:34;;1637:3;;;:::i;:::-;;;1601:378;;5810:1603:14;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:14;;-1:-1:-1;6962:30:14;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:14;;-1:-1:-1;7071:30:14;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;16465:25:20;;;16538:4;16526:17;;16506:18;;;16499:45;;;;16560:18;;;16553:34;;;16603:18;;;16596:34;;;7224:24:14;;16437:19:20;;7224:24:14;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:14;;-1:-1:-1;;7224:24:14;;;-1:-1:-1;;;;;;;7262:20:14;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:14;;-1:-1:-1;5810:1603:14;;;;;;;;:::o;4883:336::-;4993:7;;5051:66;5038:80;;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:196:20;82:20;;-1:-1:-1;;;;;131:54:20;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:755::-;269:5;322:3;315:4;307:6;303:17;299:27;289:2;;344:5;337;330:20;289:2;384:6;371:20;410:4;433:43;473:2;433:43;:::i;:::-;505:2;499:9;517:31;545:2;537:6;517:31;:::i;:::-;583:18;;;617:15;;;;-1:-1:-1;652:15:20;;;702:1;698:10;;;686:23;;682:32;;679:41;-1:-1:-1;676:2:20;;;737:5;730;723:20;676:2;763:5;777:163;791:2;788:1;785:9;777:163;;;848:17;;836:30;;886:12;;;;918;;;;809:1;802:9;777:163;;;-1:-1:-1;958:6:20;;279:691;-1:-1:-1;;;;;;;279:691:20:o;975:575::-;1017:5;1070:3;1063:4;1055:6;1051:17;1047:27;1037:2;;1092:5;1085;1078:20;1037:2;1132:6;1119:20;1158:18;1154:2;1151:26;1148:2;;;1180:18;;:::i;:::-;1229:2;1223:9;1241:67;1296:2;1277:13;;-1:-1:-1;;1273:27:20;1302:4;1269:38;1223:9;1241:67;:::i;:::-;1332:2;1324:6;1317:18;1378:3;1371:4;1366:2;1358:6;1354:15;1350:26;1347:35;1344:2;;;1399:5;1392;1385:20;1344:2;1467;1460:4;1452:6;1448:17;1441:4;1433:6;1429:17;1416:54;1490:15;;;1507:4;1486:26;1479:41;;;;1494:6;1027:523;-1:-1:-1;;1027:523:20:o;1555:270::-;1623:6;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1733:29;1752:9;1733:29;:::i;:::-;1723:39;;1781:38;1815:2;1804:9;1800:18;1781:38;:::i;:::-;1771:48;;1642:183;;;;;:::o;1830:983::-;1984:6;1992;2000;2008;2016;2069:3;2057:9;2048:7;2044:23;2040:33;2037:2;;;2091:6;2083;2076:22;2037:2;2119:29;2138:9;2119:29;:::i;:::-;2109:39;;2167:38;2201:2;2190:9;2186:18;2167:38;:::i;:::-;2157:48;;2256:2;2245:9;2241:18;2228:32;2279:18;2320:2;2312:6;2309:14;2306:2;;;2341:6;2333;2326:22;2306:2;2369:61;2422:7;2413:6;2402:9;2398:22;2369:61;:::i;:::-;2359:71;;2483:2;2472:9;2468:18;2455:32;2439:48;;2512:2;2502:8;2499:16;2496:2;;;2533:6;2525;2518:22;2496:2;2561:63;2616:7;2605:8;2594:9;2590:24;2561:63;:::i;:::-;2551:73;;2677:3;2666:9;2662:19;2649:33;2633:49;;2707:2;2697:8;2694:16;2691:2;;;2728:6;2720;2713:22;2691:2;;2756:51;2799:7;2788:8;2777:9;2773:24;2756:51;:::i;:::-;2746:61;;;2027:786;;;;;;;;:::o;2818:626::-;2922:6;2930;2938;2946;2954;3007:3;2995:9;2986:7;2982:23;2978:33;2975:2;;;3029:6;3021;3014:22;2975:2;3057:29;3076:9;3057:29;:::i;:::-;3047:39;;3105:38;3139:2;3128:9;3124:18;3105:38;:::i;:::-;3095:48;;3190:2;3179:9;3175:18;3162:32;3152:42;;3241:2;3230:9;3226:18;3213:32;3203:42;;3296:3;3285:9;3281:19;3268:33;3324:18;3316:6;3313:30;3310:2;;;3361:6;3353;3346:22;3310:2;3389:49;3430:7;3421:6;3410:9;3406:22;3389:49;:::i;3449:699::-;3576:6;3584;3592;3645:2;3633:9;3624:7;3620:23;3616:32;3613:2;;;3666:6;3658;3651:22;3613:2;3694:29;3713:9;3694:29;:::i;:::-;3684:39;;3774:2;3763:9;3759:18;3746:32;3797:18;3838:2;3830:6;3827:14;3824:2;;;3859:6;3851;3844:22;3824:2;3887:61;3940:7;3931:6;3920:9;3916:22;3887:61;:::i;:::-;3877:71;;4001:2;3990:9;3986:18;3973:32;3957:48;;4030:2;4020:8;4017:16;4014:2;;;4051:6;4043;4036:22;4014:2;;4079:63;4134:7;4123:8;4112:9;4108:24;4079:63;:::i;:::-;4069:73;;;3603:545;;;;;:::o;4153:908::-;4298:6;4306;4314;4322;4375:3;4363:9;4354:7;4350:23;4346:33;4343:2;;;4397:6;4389;4382:22;4343:2;4425:29;4444:9;4425:29;:::i;:::-;4415:39;;4505:2;4494:9;4490:18;4477:32;4528:18;4569:2;4561:6;4558:14;4555:2;;;4590:6;4582;4575:22;4555:2;4618:61;4671:7;4662:6;4651:9;4647:22;4618:61;:::i;:::-;4608:71;;4732:2;4721:9;4717:18;4704:32;4688:48;;4761:2;4751:8;4748:16;4745:2;;;4782:6;4774;4767:22;4745:2;4810:63;4865:7;4854:8;4843:9;4839:24;4810:63;:::i;:::-;4800:73;;4926:2;4915:9;4911:18;4898:32;4882:48;;4955:2;4945:8;4942:16;4939:2;;;4976:6;4968;4961:22;4939:2;;5004:51;5047:7;5036:8;5025:9;5021:24;5004:51;:::i;:::-;4994:61;;;4333:728;;;;;;;:::o;5066:367::-;5131:6;5139;5192:2;5180:9;5171:7;5167:23;5163:32;5160:2;;;5213:6;5205;5198:22;5160:2;5241:29;5260:9;5241:29;:::i;:::-;5231:39;;5320:2;5309:9;5305:18;5292:32;5367:5;5360:13;5353:21;5346:5;5343:32;5333:2;;5394:6;5386;5379:22;5333:2;5422:5;5412:15;;;5150:283;;;;;:::o;5438:264::-;5506:6;5514;5567:2;5555:9;5546:7;5542:23;5538:32;5535:2;;;5588:6;5580;5573:22;5535:2;5616:29;5635:9;5616:29;:::i;:::-;5606:39;5692:2;5677:18;;;;5664:32;;-1:-1:-1;;;5525:177:20:o;5707:332::-;5784:6;5792;5800;5853:2;5841:9;5832:7;5828:23;5824:32;5821:2;;;5874:6;5866;5859:22;5821:2;5902:29;5921:9;5902:29;:::i;:::-;5892:39;5978:2;5963:18;;5950:32;;-1:-1:-1;6029:2:20;6014:18;;;6001:32;;5811:228;-1:-1:-1;;;5811:228:20:o;6044:551::-;6139:6;6147;6155;6163;6216:3;6204:9;6195:7;6191:23;6187:33;6184:2;;;6238:6;6230;6223:22;6184:2;6266:29;6285:9;6266:29;:::i;:::-;6256:39;;6342:2;6331:9;6327:18;6314:32;6304:42;;6393:2;6382:9;6378:18;6365:32;6355:42;;6448:2;6437:9;6433:18;6420:32;6475:18;6467:6;6464:30;6461:2;;;6512:6;6504;6497:22;6461:2;6540:49;6581:7;6572:6;6561:9;6557:22;6540:49;:::i;6600:1274::-;6718:6;6726;6779:2;6767:9;6758:7;6754:23;6750:32;6747:2;;;6800:6;6792;6785:22;6747:2;6845:9;6832:23;6874:18;6915:2;6907:6;6904:14;6901:2;;;6936:6;6928;6921:22;6901:2;6979:6;6968:9;6964:22;6954:32;;7024:7;7017:4;7013:2;7009:13;7005:27;6995:2;;7051:6;7043;7036:22;6995:2;7092;7079:16;7114:4;7137:43;7177:2;7137:43;:::i;:::-;7209:2;7203:9;7221:31;7249:2;7241:6;7221:31;:::i;:::-;7287:18;;;7321:15;;;;-1:-1:-1;7356:11:20;;;7398:1;7394:10;;;7386:19;;7382:28;;7379:41;-1:-1:-1;7376:2:20;;;7438:6;7430;7423:22;7376:2;7465:6;7456:15;;7480:169;7494:2;7491:1;7488:9;7480:169;;;7551:23;7570:3;7551:23;:::i;:::-;7539:36;;7512:1;7505:9;;;;;7595:12;;;;7627;;7480:169;;;-1:-1:-1;7668:6:20;-1:-1:-1;;7712:18:20;;7699:32;;-1:-1:-1;;7743:16:20;;;7740:2;;;7777:6;7769;7762:22;7740:2;;7805:63;7860:7;7849:8;7838:9;7834:24;7805:63;:::i;:::-;7795:73;;;6737:1137;;;;;:::o;7879:190::-;7938:6;7991:2;7979:9;7970:7;7966:23;7962:32;7959:2;;;8012:6;8004;7997:22;7959:2;-1:-1:-1;8040:23:20;;7949:120;-1:-1:-1;7949:120:20:o;8074:264::-;8142:6;8150;8203:2;8191:9;8182:7;8178:23;8174:32;8171:2;;;8224:6;8216;8209:22;8171:2;8265:9;8252:23;8242:33;;8294:38;8328:2;8317:9;8313:18;8294:38;:::i;8343:255::-;8401:6;8454:2;8442:9;8433:7;8429:23;8425:32;8422:2;;;8475:6;8467;8460:22;8422:2;8519:9;8506:23;8538:30;8562:5;8538:30;:::i;8603:259::-;8672:6;8725:2;8713:9;8704:7;8700:23;8696:32;8693:2;;;8746:6;8738;8731:22;8693:2;8783:9;8777:16;8802:30;8826:5;8802:30;:::i;8867:920::-;8999:6;9007;9015;9023;9031;9039;9047;9100:3;9088:9;9079:7;9075:23;9071:33;9068:2;;;9122:6;9114;9107:22;9068:2;9167:9;9154:23;9196:18;9237:2;9229:6;9226:14;9223:2;;;9258:6;9250;9243:22;9223:2;9286:49;9327:7;9318:6;9307:9;9303:22;9286:49;:::i;:::-;9276:59;;9382:2;9371:9;9367:18;9354:32;9344:42;;9405:38;9439:2;9428:9;9424:18;9405:38;:::i;:::-;9395:48;;9490:2;9479:9;9475:18;9462:32;9452:42;;9541:3;9530:9;9526:19;9513:33;9503:43;;9593:3;9582:9;9578:19;9565:33;9555:43;;9651:3;9640:9;9636:19;9623:33;9607:49;;9681:2;9671:8;9668:16;9665:2;;;9702:6;9694;9687:22;9665:2;;9730:51;9773:7;9762:8;9751:9;9747:24;9730:51;:::i;:::-;9720:61;;;9058:729;;;;;;;;;;:::o;9792:341::-;9861:6;9914:2;9902:9;9893:7;9889:23;9885:32;9882:2;;;9935:6;9927;9920:22;9882:2;9980:9;9967:23;10013:18;10005:6;10002:30;9999:2;;;10050:6;10042;10035:22;9999:2;10078:49;10119:7;10110:6;10099:9;10095:22;10078:49;:::i;:::-;10068:59;9872:261;-1:-1:-1;;;;9872:261:20:o;10333:437::-;10386:3;10424:5;10418:12;10451:6;10446:3;10439:19;10477:4;10506:2;10501:3;10497:12;10490:19;;10543:2;10536:5;10532:14;10564:3;10576:169;10590:6;10587:1;10584:13;10576:169;;;10651:13;;10639:26;;10685:12;;;;10720:15;;;;10612:1;10605:9;10576:169;;;-1:-1:-1;10761:3:20;;10394:376;-1:-1:-1;;;;;10394:376:20:o;10775:257::-;10816:3;10854:5;10848:12;10881:6;10876:3;10869:19;10897:63;10953:6;10946:4;10941:3;10937:14;10930:4;10923:5;10919:16;10897:63;:::i;:::-;11014:2;10993:15;-1:-1:-1;;10989:29:20;10980:39;;;;11021:4;10976:50;;10824:208;-1:-1:-1;;10824:208:20:o;11486:786::-;11897:25;11892:3;11885:38;11867:3;11952:6;11946:13;11968:62;12023:6;12018:2;12013:3;12009:12;12002:4;11994:6;11990:17;11968:62;:::i;:::-;12094:19;12089:2;12049:16;;;12081:11;;;12074:40;12139:13;;12161:63;12139:13;12210:2;12202:11;;12195:4;12183:17;;12161:63;:::i;:::-;12244:17;12263:2;12240:26;;11875:397;-1:-1:-1;;;;11875:397:20:o;12508:849::-;12830:4;-1:-1:-1;;;;;12940:2:20;12932:6;12928:15;12917:9;12910:34;12992:2;12984:6;12980:15;12975:2;12964:9;12960:18;12953:43;;13032:3;13027:2;13016:9;13012:18;13005:31;13059:57;13111:3;13100:9;13096:19;13088:6;13059:57;:::i;:::-;13164:9;13156:6;13152:22;13147:2;13136:9;13132:18;13125:50;13198:44;13235:6;13227;13198:44;:::i;:::-;13184:58;;13291:9;13283:6;13279:22;13273:3;13262:9;13258:19;13251:51;13319:32;13344:6;13336;13319:32;:::i;:::-;13311:40;12839:518;-1:-1:-1;;;;;;;;12839:518:20:o;13362:583::-;13584:4;-1:-1:-1;;;;;13694:2:20;13686:6;13682:15;13671:9;13664:34;13746:2;13738:6;13734:15;13729:2;13718:9;13714:18;13707:43;;13786:6;13781:2;13770:9;13766:18;13759:34;13829:6;13824:2;13813:9;13809:18;13802:34;13873:3;13867;13856:9;13852:19;13845:32;13894:45;13934:3;13923:9;13919:19;13911:6;13894:45;:::i;:::-;13886:53;13593:352;-1:-1:-1;;;;;;;13593:352:20:o;13950:261::-;14129:2;14118:9;14111:21;14092:4;14149:56;14201:2;14190:9;14186:18;14178:6;14149:56;:::i;14216:465::-;14473:2;14462:9;14455:21;14436:4;14499:56;14551:2;14540:9;14536:18;14528:6;14499:56;:::i;:::-;14603:9;14595:6;14591:22;14586:2;14575:9;14571:18;14564:50;14631:44;14668:6;14660;14631:44;:::i;:::-;14623:52;14445:236;-1:-1:-1;;;;;14445:236:20:o;16641:219::-;16790:2;16779:9;16772:21;16753:4;16810:44;16850:2;16839:9;16835:18;16827:6;16810:44;:::i;27178:183::-;27238:4;27271:18;27263:6;27260:30;27257:2;;;27293:18;;:::i;:::-;-1:-1:-1;27338:1:20;27334:14;27350:4;27330:25;;27247:114::o;27366:128::-;27406:3;27437:1;27433:6;27430:1;27427:13;27424:2;;;27443:18;;:::i;:::-;-1:-1:-1;27479:9:20;;27414:80::o;27499:168::-;27539:7;27605:1;27601;27597:6;27593:14;27590:1;27587:21;27582:1;27575:9;27568:17;27564:45;27561:2;;;27612:18;;:::i;:::-;-1:-1:-1;27652:9:20;;27551:116::o;27672:258::-;27744:1;27754:113;27768:6;27765:1;27762:13;27754:113;;;27844:11;;;27838:18;27825:11;;;27818:39;27790:2;27783:10;27754:113;;;27885:6;27882:1;27879:13;27876:2;;;-1:-1:-1;;27920:1:20;27902:16;;27895:27;27725:205::o;27935:136::-;27974:3;28002:5;27992:2;;28011:18;;:::i;:::-;-1:-1:-1;;;28047:18:20;;27982:89::o;28076:437::-;28155:1;28151:12;;;;28198;;;28219:2;;28273:4;28265:6;28261:17;28251:27;;28219:2;28326;28318:6;28315:14;28295:18;28292:38;28289:2;;;-1:-1:-1;;;28360:1:20;28353:88;28464:4;28461:1;28454:15;28492:4;28489:1;28482:15;28289:2;;28131:382;;;:::o;28518:249::-;28628:2;28609:13;;-1:-1:-1;;28605:27:20;28593:40;;28663:18;28648:34;;28684:22;;;28645:62;28642:2;;;28710:18;;:::i;:::-;28746:2;28739:22;-1:-1:-1;;28565:202:20:o;28772:135::-;28811:3;-1:-1:-1;;28832:17:20;;28829:2;;;28852:18;;:::i;:::-;-1:-1:-1;28899:1:20;28888:13;;28819:88::o;28912:184::-;-1:-1:-1;;;28961:1:20;28954:88;29061:4;29058:1;29051:15;29085:4;29082:1;29075:15;29101:184;-1:-1:-1;;;29150:1:20;29143:88;29250:4;29247:1;29240:15;29274:4;29271:1;29264:15;29290:185;29325:3;29367:1;29349:16;29346:23;29343:2;;;29417:1;29412:3;29407;29392:27;29448:10;29443:3;29439:20;29333:142;:::o;29480:671::-;29519:3;29561:4;29543:16;29540:26;29537:2;;;29527:624;:::o;29537:2::-;29603;29597:9;-1:-1:-1;;29668:16:20;29664:25;;29661:1;29597:9;29640:50;29719:4;29713:11;29743:16;29778:18;29849:2;29842:4;29834:6;29830:17;29827:25;29822:2;29814:6;29811:14;29808:45;29805:2;;;29856:5;;;;;29527:624;:::o;29805:2::-;29893:6;29887:4;29883:17;29872:28;;29929:3;29923:10;29956:2;29948:6;29945:14;29942:2;;;29962:5;;;;;;29527:624;:::o;29942:2::-;30046;30027:16;30021:4;30017:27;30013:36;30006:4;29997:6;29992:3;29988:16;29984:27;29981:69;29978:2;;;30053:5;;;;;;29527:624;:::o;29978:2::-;30069:57;30120:4;30111:6;30103;30099:19;30095:30;30089:4;30069:57;:::i;:::-;-1:-1:-1;30142:3:20;;29527:624;-1:-1:-1;;;;;29527:624:20:o;30156:177::-;-1:-1:-1;;;;;;30234:5:20;30230:78;30223:5;30220:89;30210:2;;30323:1;30320;30313:12"
            },
            "methodIdentifiers": {
              "CONTRACT_URI_SETTER_ROLE()": "121df247",
              "DEFAULT_ADMIN_ROLE()": "a217fddf",
              "MINTER_ROLE()": "d5391393",
              "PAUSER_ROLE()": "e63ab1e9",
              "TRANSFERRER_ROLE()": "63ac5d97",
              "URI_SETTER_ROLE()": "7f345710",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "burn(address,uint256,uint256)": "f5298aca",
              "burnBatch(address,uint256[],uint256[])": "6b20c454",
              "contractURI()": "e8a3d485",
              "exists(uint256)": "4f558e79",
              "getRoleAdmin(bytes32)": "248a9ca3",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mint(address,uint256,uint256,bytes)": "731133e9",
              "mintBatch(address,uint256[],uint256[],bytes)": "1f7fdffa",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "renounceRole(bytes32,address)": "36568abe",
              "revokeRole(bytes32,address)": "d547741f",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setContractURI(string)": "938e3d7b",
              "setURI(string)": "02fe5305",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "transferWithTransferPass(bytes,uint256,address,uint256,uint256,uint256,string)": "23a45c61",
              "unpause()": "3f4ba83a",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transferrer\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newContractURI\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"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\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"passId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferWithTransferPass\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONTRACT_URI_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFERRER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"URI_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"setURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"passId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"transferWithTransferPass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/LiquiditeamNft.sol\":\"LiquiditeamNft\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x5b35d8e68aeaccc685239bd9dd79b9ba01a0357930f8a3307ab85511733d9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba8eb2d22f9321bd4660f6617c181d9611ff30a9b089408b8c6e2216d6d5cdc5\",\"dweb:/ipfs/QmTSJvhjHfnUV1j4hsqDv8PmLvGBLRs9gHLjTUXrUJ5Y9q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004\",\"dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x447a21c87433c0f11252912313a96f3454629ef88cca7a4eefbb283b3ec409f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d35750fb5ced798b82b8ab085eb5f71529b0d4f72152d182b5bebdc770b20d\",\"dweb:/ipfs/QmUqmyzRZxaLvSXig87HFZgiUxv9ivc2VqfAbxEw7rx32d\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol\":{\"keccak256\":\"0xb11d1ade7146ac3da122e1f387ea82b0bd385d50823946c3f967dbffef3e9f4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a5fc67f024fd2d261543c52a33a2a90b96d2ea1867829e8e12fe6b89b53aee1\",\"dweb:/ipfs/QmPc3ryH7Yv4FoY14CGbaXuQVQ7iu2yrxVAtmbGrN7bscf\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol\":{\"keccak256\":\"0xe3deb5f3b0c9d12944f62ab680f041bbf1910d9d3ac6b545b4b8e399643c538d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f5bc920c2f9859b02dce02d7d0211608398287c643d42ad048555c9b204dc8\",\"dweb:/ipfs/QmSu2MFkCSPNG6pRsXxMai7Do7EDqLwpnnHVDB7q2wHJnr\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/LiquiditeamNft.sol\":{\"keccak256\":\"0x86d6ab22d6f587f5b855ba2c815ee8e5945562217533379cdd35cd1bbf0027a8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://911d316c77dcf8045a0dfcd6e26ea0ccf8ebdea53e35b4aba97c29384e4c6aee\",\"dweb:/ipfs/QmYZjg8CD2Cum3pDYuQzHzADnvrxCviZCUmKi4P4Pyiz11\"]}},\"version\":1}"
        }
      },
      "contracts/LiquiditeamNftV2.sol": {
        "LiquiditeamNftV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "transferrer",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "newContractURI",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "royaltyReceiver",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "royaltyFeeNumerator",
                  "type": "uint96"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "previousAdminRole",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "newAdminRole",
                  "type": "bytes32"
                }
              ],
              "name": "RoleAdminChanged",
              "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": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "passId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferWithTransferPass",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "value",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "CONTRACT_URI_SETTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DEFAULT_ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PAUSER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ROYALTY_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "TRANSFERRER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "URI_SETTER_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "burnBatch",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "deleteDefaultRoyalty",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "exists",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "name": "getRoleAdmin",
              "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": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mintBatch",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "renounceRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "resetTokenRoyalty",
              "outputs": [],
              "stateMutability": "nonpayable",
              "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": "",
                  "type": "address"
                },
                {
                  "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": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "newURI",
                  "type": "string"
                }
              ],
              "name": "setContractURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "feeNumerator",
                  "type": "uint96"
                }
              ],
              "name": "setDefaultRoyalty",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "feeNumerator",
                  "type": "uint96"
                }
              ],
              "name": "setTokenRoyalty",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "newURI",
                  "type": "string"
                }
              ],
              "name": "setURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "passId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "validUntil",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "newUri",
                  "type": "string"
                }
              ],
              "name": "transferWithTransferPass",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "unpause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5714:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:20",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:20",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:20",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:20"
                              },
                              "nodeType": "YulIf",
                              "src": "115:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:20",
                            "type": ""
                          }
                        ],
                        "src": "14:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "255:116:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "265:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "280:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "274:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "274:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "265:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "349:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "358:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "361:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "351:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "351:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "351:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "309:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "320:5:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "335:2:20",
                                                    "type": "",
                                                    "value": "96"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "339:1:20",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "331:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "331:10:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "343:1:20",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "327:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "327:18:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "316:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "316:30:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "306:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "306:41:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:49:20"
                              },
                              "nodeType": "YulIf",
                              "src": "296:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_uint96_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "234:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "245:5:20",
                            "type": ""
                          }
                        ],
                        "src": "196:175:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "517:1037:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "564:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "573:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "581:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "566:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "566:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "566:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "538:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "547:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "534:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "534:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "559:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "530:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "530:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "527:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "599:50:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "639:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "609:29:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "609:40:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "599:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "658:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "693:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "678:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "678:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "672:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "672:25:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "662:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "706:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "724:2:20",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "728:1:20",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "720:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "720:10:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "732:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "716:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "716:18:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "710:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "761:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "770:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "778:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "763:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "763:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "763:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "749:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "757:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "746:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "746:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "743:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "796:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "810:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "821:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "800:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "876:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "893:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "878:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "878:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "855:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "859:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "851:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "851:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "866:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "847:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "847:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "840:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "840:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "837:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "911:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "927:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "921:9:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "915:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "953:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "955:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "955:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "955:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "945:2:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "949:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "942:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "942:10:20"
                              },
                              "nodeType": "YulIf",
                              "src": "939:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "984:17:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "998:2:20",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:7:20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "988:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1010:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1030:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1024:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1024:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1014:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1042:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1064:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1088:2:20"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1092:4:20",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1084:3:20"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1084:13:20"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1099:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1080:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1080:22:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1104:2:20",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1076:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1076:31:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1109:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1072:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1072:40:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1060:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1060:53:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1046:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1172:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1174:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1174:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1174:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1131:10:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1143:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1128:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1128:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1151:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1163:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1148:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1148:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1125:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1125:46:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1122:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1210:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1214:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1203:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1203:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1203:22:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1249:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1234:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1234:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1234:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1298:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1307:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1315:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1300:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1300:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1300:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1275:2:20"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1279:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1271:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1271:11:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1284:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1267:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1267:20:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1289:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1264:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1264:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1261:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1359:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1363:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1355:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1355:11:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1372:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1380:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1368:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1368:15:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1385:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1333:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1333:55:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1333:55:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1397:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1407:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1422:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1466:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1477:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1462:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1462:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1432:29:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1432:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1422:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1490:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1533:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1544:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1529:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1529:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint96_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1500:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1500:48:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1490:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_addresst_uint96_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "459:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "470:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "482:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "490:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "498:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "506:6:20",
                            "type": ""
                          }
                        ],
                        "src": "376:1178:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1948:397:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1965:3:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1970:25:20",
                                    "type": "",
                                    "value": "AccessControl: account "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1958:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1958:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1958:38:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2005:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2025:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2019:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2019:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2009:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2067:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2075:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2063:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2063:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2086:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2091:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2082:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2082:12:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2096:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2041:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2041:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2041:62:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2112:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2126:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2131:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2122:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2122:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2116:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2158:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2162:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2154:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2154:11:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2167:19:20",
                                    "type": "",
                                    "value": " is missing role "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2147:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2147:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2147:40:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2196:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2218:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2212:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2212:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2200:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2260:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2268:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2256:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2256:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2279:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2283:2:20",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2275:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2275:11:20"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2288:8:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2234:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2234:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2234:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2306:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2321:2:20"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2325:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2317:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2317:17:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2336:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2313:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2313:26:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2306:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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": "1916:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1921:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1929:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1940:3:20",
                            "type": ""
                          }
                        ],
                        "src": "1559:786:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2563:276:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2573:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2585:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2596:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2581:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2581:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2573:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2616:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2627:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2609:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2609:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2609:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2654:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2665:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2650:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2650:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2670:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2643:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2643:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2643:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2697:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2708:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2693:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2693:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2713:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2686:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2686:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2686:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2740:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2751:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2736:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2736:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2756:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2729:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2729:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2729:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2783:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2794:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2779:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2779:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2804:6:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2820:3:20",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2825:1:20",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2816:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2816:11:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2829:1:20",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2812:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2812:19:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2800:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2800:32:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2772:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2772:61:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2772:61:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2500:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2511:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2519:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2527:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2535:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2543:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2554:4:20",
                            "type": ""
                          }
                        ],
                        "src": "2350:489:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2965:262:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2982:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2993:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2975:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2975:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2975:21:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3005:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3025:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3019:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3019:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3009:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3052:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3063:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3048:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3048:18:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3068:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3041:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3041:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3041:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3110:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3118:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3106:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3106:15:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3127:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3138:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3123:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3123:18:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3143:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3084:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3084:66:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3084:66:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3159:62:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3175:9:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3194:6:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3202:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3190:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3190:15:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3211:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3207:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3207:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3186:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3186:29:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3171:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3171:45:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3218:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3167:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3167:54:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3159:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2934:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2945:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2956:4:20",
                            "type": ""
                          }
                        ],
                        "src": "2844:383:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3406:182:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3423:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3434:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3416:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3416:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3416:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3457:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3468:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3453:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3453:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3473:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3446:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3446:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3446:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3496:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3507:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3492:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3492:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3512:34:20",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3485:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3485:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3485:62:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3556:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3568:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3579:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3564:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3564:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3556:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3383:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3397:4:20",
                            "type": ""
                          }
                        ],
                        "src": "3232:356:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3767:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3784:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3795:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3777:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3777:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3777:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3829:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3814:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3814:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3834:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3807:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3807:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3807:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3857:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3868:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3853:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3853:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3873:34:20",
                                    "type": "",
                                    "value": "ERC2981: royalty fee will exceed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3846:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3846:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3846:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3928:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3939:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3924:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3924:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3944:12:20",
                                    "type": "",
                                    "value": " salePrice"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3917:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3917:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3917:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3966:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3978:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3989:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3974:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3974:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3966:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3744:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3758:4:20",
                            "type": ""
                          }
                        ],
                        "src": "3593:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4178:175:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4195:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4206:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4188:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4188:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4188:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4229:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4240:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4225:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4225:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4245:2:20",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4218:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4218:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4218:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4268:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4279:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4264:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4264:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4284:27:20",
                                    "type": "",
                                    "value": "ERC2981: invalid receiver"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4257:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4257:55:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4257:55:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4321:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4333:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4344:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4329:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4329:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4155:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4169:4:20",
                            "type": ""
                          }
                        ],
                        "src": "4004:349:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4406:80:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4433:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "4435:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4435:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4435:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4422:1:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "4429:1:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "4425:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4425:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4419:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4419:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4416:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4464:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4475:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "4478:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4471:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4471:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "4464:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "4389:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "4392:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "4398:3:20",
                            "type": ""
                          }
                        ],
                        "src": "4358:128:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4543:116:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4602:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "4604:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4604:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4604:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "4574:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4567:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4567:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4560:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4560:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "4582:1:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4593:1:20",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "4589:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4589:6:20"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "4597:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "4585:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4585:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4579:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4579:21:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4556:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4556:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4553:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4633:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4648:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "4651:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "4644:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4644:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "4633:7:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "4522:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "4525:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "4531:7:20",
                            "type": ""
                          }
                        ],
                        "src": "4491:168:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4717:205:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4727:10:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4736:1:20",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4731:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4796:63:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4821:3:20"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4826:1:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4817:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4817:11:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4840:3:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4845:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4836:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4836:11:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4830:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4830:18:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4810:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4810:39:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4810:39:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4757:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4760:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4754:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4754:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4768:19:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4770:15:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4779:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4782:2:20",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4775:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4775:10:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4770:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4750:3:20",
                                "statements": []
                              },
                              "src": "4746:113:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4885:31:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4898:3:20"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4903:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4894:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4894:16:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4912:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4887:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4887:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4887:27:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4874:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4877:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4871:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4871:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4868:2:20"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4695:3:20",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4700:3:20",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4705:6:20",
                            "type": ""
                          }
                        ],
                        "src": "4664:258:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4974:89:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5001:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5003:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5003:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5003:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4994:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4984:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5032:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5043:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5054:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "5050:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5050:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5039:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5039:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5032:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4956:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "4966:3:20",
                            "type": ""
                          }
                        ],
                        "src": "4927:136:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5123:325:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5133:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5147:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5150:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5143:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5143:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "5133:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5164:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5194:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5200:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5190:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5190:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "5168:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5241:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5243:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "5257:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5265:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5253:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5253:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5243:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5221:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5214:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5214:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5211:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5331:111:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5352:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5359:3:20",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5364:10:20",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "5355:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5355:20:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5345:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5345:31:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5345:31:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5396:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5399:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5389:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5389:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5389:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5424:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5427:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5417:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5417:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5417:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5287:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5310:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5318:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5307:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5307:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5284:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5284:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5281:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "5103:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "5112:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5068:380:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5485:95:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5502:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5509:3:20",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5514:10:20",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5505:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5505:20:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5495:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5495:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5495:31:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5542:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5545:4:20",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5535:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5535:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5535:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5566:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5569:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5559:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5559:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5559:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5453:127:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5617:95:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5634:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5641:3:20",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5646:10:20",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5637:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5637:20:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5627:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5627:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5627:31:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5674:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5677:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5667:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5667:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5667:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5698:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5701:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5691:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5691:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5691:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5585:127:20"
                      }
                    ]
                  },
                  "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 abi_decode_uint96_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(96, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptrt_addresst_uint96_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\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(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\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(value1, value1) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_uint96_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\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    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_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC2981: royalty fee will exceed\")\n        mstore(add(headStart, 96), \" salePrice\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff__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), \"ERC2981: invalid receiver\")\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 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 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 decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101406040523480156200001257600080fd5b506040516200491238038062004912833981016040819052620000359162000831565b6040518060400160405280601a81526020017f4c6971756964697465616d4e66745472616e7366657250617373000000000000815250604051806040016040528060018152602001603160f81b81525060405180602001604052806000815250620000a681620002a660201b60201c565b506006805460ff19169055815160208084019190912082518383012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919290916080523060601b60c052610120525062000155925060009150339050620002bf565b620001817f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c33620002bf565b620001ad7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a33620002bf565b620001d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620002bf565b620002057f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620002bf565b620002317feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e33620002bf565b6200025d7f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d785620002bf565b6001600160a01b038216158015906200027f57506000816001600160601b0316115b15620002915762000291828262000363565b6200029c8362000468565b5050505062000ac1565b8051620002bb90600290602084019062000756565b5050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002bb5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200031f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6127106001600160601b0382161115620003d75760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b0382166200042f5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620003ce565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600355565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a6200049481620004ae565b8151620004a990600890602085019062000756565b505050565b620004ba8133620004bd565b50565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002bb5762000509816001600160a01b031660146200055a60201b6200135e1760201c565b6200051f8360206200135e6200055a821b17811c565b6040516020016200053292919062000920565b60408051601f198184030181529082905262461bcd60e51b8252620003ce9160040162000999565b606060006200056b836002620009e9565b62000578906002620009ce565b6001600160401b038111156200059e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015620005c9576020820181803683370190505b509050600360fc1b81600081518110620005f357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106200063157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600062000657846002620009e9565b62000664906001620009ce565b90505b6001811115620006fe576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620006a857634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110620006cd57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93620006f68162000a3e565b905062000667565b5083156200074f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620003ce565b9392505050565b828054620007649062000a58565b90600052602060002090601f016020900481019282620007885760008555620007d3565b82601f10620007a357805160ff1916838001178555620007d3565b82800160010185558215620007d3579182015b82811115620007d3578251825591602001919060010190620007b6565b50620007e1929150620007e5565b5090565b5b80821115620007e15760008155600101620007e6565b80516001600160a01b03811681146200081457600080fd5b919050565b80516001600160601b03811681146200081457600080fd5b6000806000806080858703121562000847578384fd5b6200085285620007fc565b60208601519094506001600160401b03808211156200086f578485fd5b818701915087601f83011262000883578485fd5b81518181111562000898576200089862000aab565b604051601f8201601f19908116603f01168101908382118183101715620008c357620008c362000aab565b816040528281528a6020848701011115620008dc578788fd5b620008ef83602083016020880162000a0b565b80975050505050506200090560408601620007fc565b9150620009156060860162000819565b905092959194509250565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516200095a81601785016020880162000a0b565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516200098d81602884016020880162000a0b565b01602801949350505050565b6020815260008251806020840152620009ba81604085016020870162000a0b565b601f01601f19169190910160400192915050565b60008219821115620009e457620009e462000a95565b500190565b600081600019048311821515161562000a065762000a0662000a95565b500290565b60005b8381101562000a2857818101518382015260200162000a0e565b8381111562000a38576000848401525b50505050565b60008162000a505762000a5062000a95565b506000190190565b600181811c9082168062000a6d57607f821691505b6020821081141562000a8f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160601c60e0516101005161012051613dfe62000b14600039600061299d015260006129ec015260006129c7015260006129200152600061294a015260006129740152613dfe6000f3fe608060405234801561001057600080fd5b50600436106102915760003560e01c80636b20c45411610160578063aa1b103f116100d8578063e63ab1e91161008c578063e985e9c511610071578063e985e9c514610618578063f242432a14610654578063f5298aca1461066757600080fd5b8063e63ab1e9146105e9578063e8a3d4851461061057600080fd5b8063cb9fcffb116100bd578063cb9fcffb14610588578063d5391393146105af578063d547741f146105d657600080fd5b8063aa1b103f14610560578063bd85b0391461056857600080fd5b80638a616bc01161012f578063938e3d7b11610114578063938e3d7b14610532578063a217fddf14610545578063a22cb4651461054d57600080fd5b80638a616bc0146104e657806391d14854146104f957600080fd5b80636b20c45414610491578063731133e9146104a45780637f345710146104b75780638456cb59146104de57600080fd5b80632a55205a1161020e5780634e1273f4116101c25780635944c753116101a75780635944c7531461044c5780635c975abb1461045f57806363ac5d971461046a57600080fd5b80634e1273f41461040a5780634f558e791461042a57600080fd5b80632f2ff15d116101f35780632f2ff15d146103dc57806336568abe146103ef5780633f4ba83a1461040257600080fd5b80632a55205a146103975780632eb2c2d6146103c957600080fd5b80630e89341c116102655780631f7fdffa1161024a5780631f7fdffa1461034e57806323a45c6114610361578063248a9ca31461037457600080fd5b80630e89341c14610307578063121df2471461032757600080fd5b8062fdd58e1461029657806301ffc9a7146102bc57806302fe5305146102df57806304634d8d146102f4575b600080fd5b6102a96102a4366004613685565b61067a565b6040519081526020015b60405180910390f35b6102cf6102ca366004613861565b610723565b60405190151581526020016102b3565b6102f26102ed366004613931565b610734565b005b6102f2610302366004613733565b61076b565b61031a610315366004613827565b6107a4565b6040516102b39190613b91565b6102a97f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a81565b6102f261035c3660046135b6565b610846565b6102f261036f366004613899565b610883565b6102a9610382366004613827565b60009081526005602052604090206001015490565b6103aa6103a53660046139a7565b610c07565b604080516001600160a01b0390931683526020830191909152016102b3565b6102f26103d736600461343c565b610cc4565b6102f26103ea36600461383f565b610d51565b6102f26103fd36600461383f565b610d76565b6102f2610dfe565b61041d61041836600461375c565b610e33565b6040516102b39190613b50565b6102cf610438366004613827565b600090815260076020526040902054151590565b6102f261045a36600461396c565b610fa9565b60065460ff166102cf565b6102a97f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d781565b6102f261049f366004613545565b610fe4565b6102f26104b23660046136e0565b61106f565b6102a97f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b6102f26110a5565b6102f26104f4366004613827565b6110d7565b6102cf61050736600461383f565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102f2610540366004613931565b611113565b6102a9600081565b6102f261055b36600461364b565b611150565b6102f261115b565b6102a9610576366004613827565b60009081526007602052604090205490565b6102a97feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e81565b6102a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102f26105e436600461383f565b61118f565b6102a97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61031a6111b4565b6102cf61062636600461340a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6102f26106623660046134e2565b611246565b6102f26106753660046136ae565b6112d3565b60006001600160a01b0383166106fd5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b600061072e8261158c565b92915050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c61075e816115ca565b610767826115d4565b5050565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e610795816115ca565b61079f83836115e7565b505050565b60008181526009602052604090208054606091906107c190613c62565b80601f01602080910402602001604051908101604052809291908181526020018280546107ed90613c62565b801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610870816115ca565b61087c858585856116ee565b5050505050565b8051602080830191909120604080517f8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c9381019390935282018890526001600160a01b03871660608301526080820186905260a0820185905260c0820184905260e082015260009061090e9061010001604051602081830303815290604052805190602001206118df565b9050600061091c828a611948565b6001600160a01b03811660009081527fddd3a4ae259d4dcf140c065fe48b07ab03bf2f7c8d9502713ea0b2e1a2c7cb02602052604090205490915060ff166109cc5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865207472616e73666572726572207369676e207472616e736660448201527f657220706173730000000000000000000000000000000000000000000000000060648201526084016106f4565b834210610a1b5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220706173732069732065787069726564000000000000000060448201526064016106f4565b6000888152600a602052604090205460ff1615610a7a5760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657220706173732077617320616c72656164792075736564000060448201526064016106f4565b60008681526009602052604081208054610a9390613c62565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90613c62565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b50505050509050805160001415610b765760008781526009602090815260409091208551610b3c92870190613256565b50867f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b85604051610b6d9190613b91565b60405180910390a25b604080518a81526001600160a01b038a166020820152908101889052606081018790527fe202102ce42c14d1f73e60059def856f1b1bc2a387f48d1c61980befd84fe7029060800160405180910390a16000898152600a60209081526040808320805460ff1916600117905580519182019052908152610bfb90899089908990611964565b50505050505050505050565b60008281526004602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610c865750604080518082019091526003546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610caa906bffffffffffffffffffffffff1687613c00565b610cb49190613be0565b91519350909150505b9250929050565b6001600160a01b038516331480610ce05750610ce08533610626565b610d445760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61087c8585858585611a87565b600082815260056020526040902060010154610d6c816115ca565b61079f8383611d0f565b6001600160a01b0381163314610df45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016106f4565b6107678282611db1565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e28816115ca565b610e30611e34565b50565b60608151835114610eac5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016106f4565b6000835167ffffffffffffffff811115610ed657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610eff578160200160208202803683370190505b50905060005b8451811015610fa157610f66858281518110610f3157634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610f5957634e487b7160e01b600052603260045260246000fd5b602002602001015161067a565b828281518110610f8657634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610f9a81613cca565b9050610f05565b509392505050565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e610fd3816115ca565b610fde848484611e86565b50505050565b6001600160a01b03831633148061100057506110008333610626565b6110645760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61079f838383611f9e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611099816115ca565b61087c85858585611964565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110cf816115ca565b610e3061220f565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e611101816115ca565b50600090815260046020526040812055565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a61113d816115ca565b815161079f906008906020850190613256565b61076733838361224c565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e611185816115ca565b610e306000600355565b6000828152600560205260409020600101546111aa816115ca565b61079f8383611db1565b6060600880546111c390613c62565b80601f01602080910402602001604051908101604052809291908181526020018280546111ef90613c62565b801561123c5780601f106112115761010080835404028352916020019161123c565b820191906000526020600020905b81548152906001019060200180831161121f57829003601f168201915b5050505050905090565b6001600160a01b03851633148061126257506112628533610626565b6112c65760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61087c8585858585612341565b6001600160a01b0383163314806112ef57506112ef8333610626565b6113535760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61079f8383836124fa565b6060600061136d836002613c00565b611378906002613bc8565b67ffffffffffffffff81111561139e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156113c8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061140d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061146657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061148a846002613c00565b611495906001613bc8565b90505b6001811115611536577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106114e457634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061150857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361152f81613c4b565b9050611498565b5083156115855760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106f4565b9392505050565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061072e575061072e8261268a565b610e3081336126c8565b8051610767906002906020840190613256565b6127106bffffffffffffffffffffffff8216111561165a5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016106f4565b6001600160a01b0382166116b05760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016106f4565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600355565b6001600160a01b03841661174e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f4565b81518351146117b05760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b336117c081600087878787612748565b60005b8451811015611877578381815181106117ec57634e487b7160e01b600052603260045260246000fd5b602002602001015160008087848151811061181757634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461185f9190613bc8565b9091555081905061186f81613cca565b9150506117c3565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118c8929190613b63565b60405180910390a461087c8160008787878761275e565b600061072e6118ec612913565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006119578585612a3d565b91509150610fa181612aaa565b6001600160a01b0384166119c45760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f4565b3360006119d085612cab565b905060006119dd85612cab565b90506119ee83600089858589612748565b6000868152602081815260408083206001600160a01b038b16845290915281208054879290611a1e908490613bc8565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611a7e83600089898989612d04565b50505050505050565b8151835114611ae95760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b6001600160a01b038416611b4d5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b33611b5c818787878787612748565b60005b8451811015611ca1576000858281518110611b8a57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110611bb657634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015611c495760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f4565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611c86908490613bc8565b9250508190555050505080611c9a90613cca565b9050611b5f565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611cf1929190613b63565b60405180910390a4611d0781878787878761275e565b505050505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166107675760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d6d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16156107675760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611e3c612e0f565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6127106bffffffffffffffffffffffff82161115611ef95760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016106f4565b6001600160a01b038216611f4f5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016106f4565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff92831660208083019182526000968752600490529190942093519051909116600160a01b029116179055565b6001600160a01b0383166120005760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b80518251146120625760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b600033905061208581856000868660405180602001604052806000815250612748565b60005b83518110156121a25760008482815181106120b357634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008483815181106120df57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038c16835290935291909120549091508181101561216b5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016106f4565b6000928352602083815260408085206001600160a01b038b168652909152909220910390558061219a81613cca565b915050612088565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516121f3929190613b63565b60405180910390a4604080516020810190915260009052610fde565b612217612e63565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e693390565b816001600160a01b0316836001600160a01b031614156122d45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016106f4565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166123a55760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b3360006123b185612cab565b905060006123be85612cab565b90506123ce838989858589612748565b6000868152602081815260408083206001600160a01b038c168452909152902054858110156124525760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f4565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061248f908490613bc8565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46124ef848a8a8a8a8a612d04565b505050505050505050565b6001600160a01b03831661255c5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b33600061256884612cab565b9050600061257584612cab565b905061259583876000858560405180602001604052806000815250612748565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156126125760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016106f4565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052611a7e565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061072e575061072e82612eb6565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff1661076757612706816001600160a01b0316601461135e565b61271183602061135e565b604051602001612722929190613a2e565b60408051601f198184030181529082905262461bcd60e51b82526106f491600401613b91565b612750612e63565b611d07868686868686612f51565b6001600160a01b0384163b15611d075760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906127a29089908990889088908890600401613aaf565b602060405180830381600087803b1580156127bc57600080fd5b505af19250505080156127ec575060408051601f3d908101601f191682019092526127e99181019061387d565b60015b6128a2576127f8613d11565b806308c379a01415612832575061280d613d28565b806128185750612834565b8060405162461bcd60e51b81526004016106f49190613b91565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016106f4565b6001600160e01b0319811663bc197c8160e01b14611a7e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016106f4565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561296c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561299657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b90565b600080825160411415612a745760208301516040840151606085015160001a612a6887828585613117565b94509450505050610cbd565b825160401415612a9e5760208301516040840151612a93868383613204565b935093505050610cbd565b50600090506002610cbd565b6000816004811115612acc57634e487b7160e01b600052602160045260246000fd5b1415612ad55750565b6001816004811115612af757634e487b7160e01b600052602160045260246000fd5b1415612b455760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106f4565b6002816004811115612b6757634e487b7160e01b600052602160045260246000fd5b1415612bb55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106f4565b6003816004811115612bd757634e487b7160e01b600052602160045260246000fd5b1415612c305760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106f4565b6004816004811115612c5257634e487b7160e01b600052602160045260246000fd5b1415610e305760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106f4565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612cf357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b15611d075760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612d489089908990889088908890600401613b0d565b602060405180830381600087803b158015612d6257600080fd5b505af1925050508015612d92575060408051601f3d908101601f19168201909252612d8f9181019061387d565b60015b612d9e576127f8613d11565b6001600160e01b0319811663f23a6e6160e01b14611a7e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016106f4565b60065460ff16612e615760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016106f4565b565b60065460ff1615612e615760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106f4565b60006001600160e01b031982167fd9b67a26000000000000000000000000000000000000000000000000000000001480612f1957506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061072e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461072e565b6001600160a01b038516612ff45760005b8351811015612ff257828181518110612f8b57634e487b7160e01b600052603260045260246000fd5b602002602001015160076000868481518110612fb757634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612fdc9190613bc8565b90915550612feb905081613cca565b9050612f62565b505b6001600160a01b038416611d075760005b8351811015611a7e57600084828151811061303057634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061305c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600060076000848152602001908152602001600020549050818110156130f45760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c7900000000000000000000000000000000000000000000000060648201526084016106f4565b6000928352600760205260409092209103905561311081613cca565b9050613005565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561314e57506000905060036131fb565b8460ff16601b1415801561316657508460ff16601c14155b1561317757506000905060046131fb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131f4576000600192509250506131fb565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161323a60ff86901c601b613bc8565b905061324887828885613117565b935093505050935093915050565b82805461326290613c62565b90600052602060002090601f01602090048101928261328457600085556132ca565b82601f1061329d57805160ff19168380011785556132ca565b828001600101855582156132ca579182015b828111156132ca5782518255916020019190600101906132af565b506132d69291506132da565b5090565b5b808211156132d657600081556001016132db565b80356001600160a01b038116811461330657600080fd5b919050565b600082601f83011261331b578081fd5b8135602061332882613ba4565b6040516133358282613c9d565b8381528281019150858301600585901b87018401881015613354578586fd5b855b8581101561337257813584529284019290840190600101613356565b5090979650505050505050565b600082601f83011261338f578081fd5b813567ffffffffffffffff8111156133a9576133a9613cfb565b6040516133c0601f8301601f191660200182613c9d565b8181528460208386010111156133d4578283fd5b816020850160208301379081016020019190915292915050565b80356bffffffffffffffffffffffff8116811461330657600080fd5b6000806040838503121561341c578182fd5b613425836132ef565b9150613433602084016132ef565b90509250929050565b600080600080600060a08688031215613453578081fd5b61345c866132ef565b945061346a602087016132ef565b9350604086013567ffffffffffffffff80821115613486578283fd5b61349289838a0161330b565b945060608801359150808211156134a7578283fd5b6134b389838a0161330b565b935060808801359150808211156134c8578283fd5b506134d58882890161337f565b9150509295509295909350565b600080600080600060a086880312156134f9578081fd5b613502866132ef565b9450613510602087016132ef565b93506040860135925060608601359150608086013567ffffffffffffffff811115613539578182fd5b6134d58882890161337f565b600080600060608486031215613559578283fd5b613562846132ef565b9250602084013567ffffffffffffffff8082111561357e578384fd5b61358a8783880161330b565b9350604086013591508082111561359f578283fd5b506135ac8682870161330b565b9150509250925092565b600080600080608085870312156135cb578384fd5b6135d4856132ef565b9350602085013567ffffffffffffffff808211156135f0578485fd5b6135fc8883890161330b565b94506040870135915080821115613611578384fd5b61361d8883890161330b565b93506060870135915080821115613632578283fd5b5061363f8782880161337f565b91505092959194509250565b6000806040838503121561365d578182fd5b613666836132ef565b91506020830135801515811461367a578182fd5b809150509250929050565b60008060408385031215613697578182fd5b6136a0836132ef565b946020939093013593505050565b6000806000606084860312156136c2578081fd5b6136cb846132ef565b95602085013595506040909401359392505050565b600080600080608085870312156136f5578182fd5b6136fe856132ef565b93506020850135925060408501359150606085013567ffffffffffffffff811115613727578182fd5b61363f8782880161337f565b60008060408385031215613745578182fd5b61374e836132ef565b9150613433602084016133ee565b6000806040838503121561376e578182fd5b823567ffffffffffffffff80821115613785578384fd5b818501915085601f830112613798578384fd5b813560206137a582613ba4565b6040516137b28282613c9d565b8381528281019150858301600585901b870184018b10156137d1578889fd5b8896505b848710156137fa576137e6816132ef565b8352600196909601959183019183016137d5565b5096505086013592505080821115613810578283fd5b5061381d8582860161330b565b9150509250929050565b600060208284031215613838578081fd5b5035919050565b60008060408385031215613851578182fd5b82359150613433602084016132ef565b600060208284031215613872578081fd5b813561158581613db2565b60006020828403121561388e578081fd5b815161158581613db2565b600080600080600080600060e0888a0312156138b3578485fd5b873567ffffffffffffffff808211156138ca578687fd5b6138d68b838c0161337f565b985060208a013597506138eb60408b016132ef565b965060608a0135955060808a0135945060a08a0135935060c08a0135915080821115613915578283fd5b506139228a828b0161337f565b91505092959891949750929550565b600060208284031215613942578081fd5b813567ffffffffffffffff811115613958578182fd5b6139648482850161337f565b949350505050565b600080600060608486031215613980578081fd5b83359250613990602085016132ef565b915061399e604085016133ee565b90509250925092565b600080604083850312156139b9578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b838110156139f7578151875295820195908201906001016139db565b509495945050505050565b60008151808452613a1a816020860160208601613c1f565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613a66816017850160208801613c1f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613aa3816028840160208801613c1f565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a06040830152613adb60a08301866139c8565b8281036060840152613aed81866139c8565b90508281036080840152613b018185613a02565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613b4560a0830184613a02565b979650505050505050565b60208152600061158560208301846139c8565b604081526000613b7660408301856139c8565b8281036020840152613b8881856139c8565b95945050505050565b6020815260006115856020830184613a02565b600067ffffffffffffffff821115613bbe57613bbe613cfb565b5060051b60200190565b60008219821115613bdb57613bdb613ce5565b500190565b600082613bfb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613c1a57613c1a613ce5565b500290565b60005b83811015613c3a578181015183820152602001613c22565b83811115610fde5750506000910152565b600081613c5a57613c5a613ce5565b506000190190565b600181811c90821680613c7657607f821691505b60208210811415613c9757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715613cc357613cc3613cfb565b6040525050565b6000600019821415613cde57613cde613ce5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115612a3a57600481823e5160e01c90565b600060443d1015613d365790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715613d6657505050505090565b8285019150815181811115613d7e5750505050505090565b843d8701016020828501011115613d985750505050505090565b613da760208286010187613c9d565b509095945050505050565b6001600160e01b031981168114610e3057600080fdfea2646970667358221220483440498ef814421fc10deedd8131b657bafcbf4f97cc1b5450183bcb43723f64736f6c63430008040033",
              "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4912 CODESIZE SUB DUP1 PUSH3 0x4912 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C6971756964697465616D4E66745472616E7366657250617373000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH3 0xA6 DUP2 PUSH3 0x2A6 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD DUP4 DUP4 ADD KECCAK256 PUSH1 0xE0 DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 SWAP1 MSTORE CHAINID PUSH1 0xA0 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP9 ADD DUP2 SWAP1 MSTORE DUP2 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS DUP2 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP4 ADD DUP4 MSTORE PUSH1 0xC0 ADD SWAP1 MSTORE DUP1 MLOAD SWAP5 ADD SWAP4 SWAP1 SWAP4 KECCAK256 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x80 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0xC0 MSTORE PUSH2 0x120 MSTORE POP PUSH3 0x155 SWAP3 POP PUSH1 0x0 SWAP2 POP CALLER SWAP1 POP PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x181 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C CALLER PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x1AD PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A CALLER PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x1D9 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A CALLER PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x205 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x231 PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E CALLER PUSH3 0x2BF JUMP JUMPDEST PUSH3 0x25D PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP6 PUSH3 0x2BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x27F JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH3 0x291 JUMPI PUSH3 0x291 DUP3 DUP3 PUSH3 0x363 JUMP JUMPDEST PUSH3 0x29C DUP4 PUSH3 0x468 JUMP JUMPDEST POP POP POP POP PUSH3 0xAC1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x2BB SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x756 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH3 0x2BB JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 PUSH3 0x31F 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 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO PUSH3 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20726F79616C7479206665652077696C6C20657863656564 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x2073616C655072696365 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x42F 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 0x455243323938313A20696E76616C696420726563656976657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH3 0x494 DUP2 PUSH3 0x4AE JUMP JUMPDEST DUP2 MLOAD PUSH3 0x4A9 SWAP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x756 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0x4BA DUP2 CALLER PUSH3 0x4BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH3 0x2BB JUMPI PUSH3 0x509 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH3 0x55A PUSH1 0x20 SHL PUSH3 0x135E OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x51F DUP4 PUSH1 0x20 PUSH3 0x135E PUSH3 0x55A DUP3 SHL OR DUP2 SHR JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x532 SWAP3 SWAP2 SWAP1 PUSH3 0x920 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH3 0x3CE SWAP2 PUSH1 0x4 ADD PUSH3 0x999 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x56B DUP4 PUSH1 0x2 PUSH3 0x9E9 JUMP JUMPDEST PUSH3 0x578 SWAP1 PUSH1 0x2 PUSH3 0x9CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x5C9 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 PUSH3 0x5F3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x631 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x657 DUP5 PUSH1 0x2 PUSH3 0x9E9 JUMP JUMPDEST PUSH3 0x664 SWAP1 PUSH1 0x1 PUSH3 0x9CE JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH3 0x6FE JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH3 0x6A8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x6CD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 PUSH3 0x6F6 DUP2 PUSH3 0xA3E JUMP JUMPDEST SWAP1 POP PUSH3 0x667 JUMP JUMPDEST POP DUP4 ISZERO PUSH3 0x74F 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 PUSH3 0x3CE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x764 SWAP1 PUSH3 0xA58 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x788 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x7D3 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x7A3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x7D3 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x7D3 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x7D3 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x7B6 JUMP JUMPDEST POP PUSH3 0x7E1 SWAP3 SWAP2 POP PUSH3 0x7E5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x7E6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x847 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x852 DUP6 PUSH3 0x7FC JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x86F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x883 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x898 JUMPI PUSH3 0x898 PUSH3 0xAAB 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 PUSH3 0x8C3 JUMPI PUSH3 0x8C3 PUSH3 0xAAB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x8DC JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH3 0x8EF DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA0B JUMP JUMPDEST DUP1 SWAP8 POP POP POP POP POP POP PUSH3 0x905 PUSH1 0x40 DUP7 ADD PUSH3 0x7FC JUMP JUMPDEST SWAP2 POP PUSH3 0x915 PUSH1 0x60 DUP7 ADD PUSH3 0x819 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH3 0x95A DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA0B JUMP JUMPDEST PUSH17 0x1034B99036B4B9B9B4B733903937B6329 PUSH1 0x7D SHL PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH3 0x98D DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA0B JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9BA DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0xA0B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x9E4 JUMPI PUSH3 0x9E4 PUSH3 0xA95 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0xA06 JUMPI PUSH3 0xA06 PUSH3 0xA95 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xA28 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA0E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xA38 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH3 0xA50 JUMPI PUSH3 0xA50 PUSH3 0xA95 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0xA6D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0xA8F 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 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x3DFE PUSH3 0xB14 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x299D ADD MSTORE PUSH1 0x0 PUSH2 0x29EC ADD MSTORE PUSH1 0x0 PUSH2 0x29C7 ADD MSTORE PUSH1 0x0 PUSH2 0x2920 ADD MSTORE PUSH1 0x0 PUSH2 0x294A ADD MSTORE PUSH1 0x0 PUSH2 0x2974 ADD MSTORE PUSH2 0x3DFE 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 0x291 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B20C454 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xAA1B103F GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xE63AB1E9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x618 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE63AB1E9 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB9FCFFB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xCB9FCFFB EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAA1B103F EQ PUSH2 0x560 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A616BC0 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x938E3D7B GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A616BC0 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B20C454 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0x7F345710 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x5944C753 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5944C753 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0x63AC5D97 EQ PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x1F7FDFFA GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x23A45C61 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x121DF247 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x296 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x2FE5305 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x4634D8D EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CF PUSH2 0x2CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3861 JUMP JUMPDEST PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B3 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x2ED CALLDATASIZE PUSH1 0x4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F2 PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0x3733 JUMP JUMPDEST PUSH2 0x76B JUMP JUMPDEST PUSH2 0x31A PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH2 0x7A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x35B6 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x3899 JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3AA PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x39A7 JUMP JUMPDEST PUSH2 0xC07 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 0x2B3 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x343C JUMP JUMPDEST PUSH2 0xCC4 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0xD51 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3FD CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0xD76 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0xDFE JUMP JUMPDEST PUSH2 0x41D PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x375C JUMP JUMPDEST PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x3B50 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x396C JUMP JUMPDEST PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x2CF JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x49F CALLDATASIZE PUSH1 0x4 PUSH2 0x3545 JUMP JUMPDEST PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x36E0 JUMP JUMPDEST PUSH2 0x106F JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x4F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x507 CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x5 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 PUSH2 0x2F2 PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x2A9 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x55B CALLDATASIZE PUSH1 0x4 PUSH2 0x364B JUMP JUMPDEST PUSH2 0x1150 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E DUP2 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0x118F JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A DUP2 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x11B4 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x340A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x2F2 PUSH2 0x662 CALLDATASIZE PUSH1 0x4 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x36AE JUMP JUMPDEST PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP3 PUSH2 0x158C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C PUSH2 0x75E DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x767 DUP3 PUSH2 0x15D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x795 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x15E7 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x7C1 SWAP1 PUSH2 0x3C62 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 0x7ED SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x83A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x80F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83A 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 0x81D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x870 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 PUSH2 0x16EE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8A73F441CCFC90803A814E1B8136A6B47F18AEC294550D26966593EE7EF0E03C SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x90E SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x18DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x91C DUP3 DUP11 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xDDD3A4AE259D4DCF140C065FE48B07AB03BF2F7C8D9502713EA0B2E1A2C7CB02 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x9CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865207472616E73666572726572207369676E207472616E7366 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572207061737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0xA1B 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 0x5472616E73666572207061737320697320657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220706173732077617320616C726561647920757365640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA93 SWAP1 PUSH2 0x3C62 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 0xABF SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB0C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAE1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB0C 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 0xAEF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB76 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP6 MLOAD PUSH2 0xB3C SWAP3 DUP8 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST POP DUP7 PUSH32 0x6BB7FF708619BA0610CBA295A58592E0451DEE2622938C8755667688DAF3529B DUP6 PUSH1 0x40 MLOAD PUSH2 0xB6D SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP11 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH32 0xE202102CE42C14D1F73E60059DEF856F1B1BC2A387F48D1C61980BEFD84FE702 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH2 0xBFB SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x1964 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP2 PUSH2 0xC86 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2710 SWAP1 PUSH2 0xCAA SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0xCB4 SWAP2 SWAP1 PUSH2 0x3BE0 JUMP JUMPDEST SWAP2 MLOAD SWAP4 POP SWAP1 SWAP2 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xCE0 JUMPI POP PUSH2 0xCE0 DUP6 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0xD44 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD6C DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xDF4 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 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x767 DUP3 DUP3 PUSH2 0x1DB1 JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xE28 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x1E34 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xEAC 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEFF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xFA1 JUMPI PUSH2 0xF66 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF31 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF59 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x67A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF86 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0xF9A DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0xF05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0xFD3 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xFDE DUP5 DUP5 DUP5 PUSH2 0x1E86 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0x1000 JUMPI POP PUSH2 0x1000 DUP4 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x1064 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 DUP4 PUSH2 0x1F9E JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x1099 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 PUSH2 0x1964 JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0x10CF DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x220F JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x1101 DUP2 PUSH2 0x15CA JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH2 0x113D DUP2 PUSH2 0x15CA JUMP JUMPDEST DUP2 MLOAD PUSH2 0x79F SWAP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST PUSH2 0x767 CALLER DUP4 DUP4 PUSH2 0x224C JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x1185 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH1 0x0 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x11AA DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x11C3 SWAP1 PUSH2 0x3C62 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 0x11EF SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x123C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1211 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x123C 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 0x121F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1262 JUMPI POP PUSH2 0x1262 DUP6 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x12C6 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0x12EF JUMPI POP PUSH2 0x12EF DUP4 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x1353 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 DUP4 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x136D DUP4 PUSH1 0x2 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0x1378 SWAP1 PUSH1 0x2 PUSH2 0x3BC8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x139E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x13C8 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x140D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1466 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x148A DUP5 PUSH1 0x2 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0x1495 SWAP1 PUSH1 0x1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1536 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x14E4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1508 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x152F DUP2 PUSH2 0x3C4B JUMP JUMPDEST SWAP1 POP PUSH2 0x1498 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x1585 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 0x6F4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x72E JUMPI POP PUSH2 0x72E DUP3 PUSH2 0x268A JUMP JUMPDEST PUSH2 0xE30 DUP2 CALLER PUSH2 0x26C8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x767 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST PUSH2 0x2710 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT ISZERO PUSH2 0x165A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20726F79616C7479206665652077696C6C20657863656564 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x2073616C655072696365 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16B0 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 0x455243323938313A20696E76616C696420726563656976657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x174E 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x17B0 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH2 0x17C0 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1877 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x17EC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1817 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x185F SWAP2 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 SWAP1 POP PUSH2 0x186F DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x17C3 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x18C8 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x87C DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x72E PUSH2 0x18EC PUSH2 0x2913 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1957 DUP6 DUP6 PUSH2 0x2A3D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xFA1 DUP2 PUSH2 0x2AAA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19C4 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x19D0 DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19DD DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x19EE DUP4 PUSH1 0x0 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x1A1E SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1A7E DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2D04 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1AE9 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B4D 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH2 0x1B5C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B8A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BB6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1C49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1C86 SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x1C9A SWAP1 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B5F JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1CF1 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1D07 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x275E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH2 0x767 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 0x1D6D 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 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x767 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 PUSH2 0x1E3C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER 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 LOG1 JUMP JUMPDEST PUSH2 0x2710 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT ISZERO PUSH2 0x1EF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20726F79616C7479206665652077696C6C20657863656564 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x2073616C655072696365 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20496E76616C696420706172616D65746572730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SWAP7 DUP8 MSTORE PUSH1 0x4 SWAP1 MSTORE SWAP2 SWAP1 SWAP5 KECCAK256 SWAP4 MLOAD SWAP1 MLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2000 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2062 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x2085 DUP2 DUP6 PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x21A2 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20B3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x20DF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x216B 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH2 0x219A DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2088 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x21F3 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2217 PUSH2 0x2E63 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1E69 CALLER SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x22D4 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x23A5 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x23B1 DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23BE DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x23CE DUP4 DUP10 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x2452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x248F SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x24EF DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2D04 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x255C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x2568 DUP5 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2575 DUP5 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x2595 DUP4 DUP8 PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x2612 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x72E JUMPI POP PUSH2 0x72E DUP3 PUSH2 0x2EB6 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH2 0x767 JUMPI PUSH2 0x2706 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0x135E JUMP JUMPDEST PUSH2 0x2711 DUP4 PUSH1 0x20 PUSH2 0x135E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2722 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x6F4 SWAP2 PUSH1 0x4 ADD PUSH2 0x3B91 JUMP JUMPDEST PUSH2 0x2750 PUSH2 0x2E63 JUMP JUMPDEST PUSH2 0x1D07 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x27A2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x27EC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x27E9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28A2 JUMPI PUSH2 0x27F8 PUSH2 0x3D11 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x2832 JUMPI POP PUSH2 0x280D PUSH2 0x3D28 JUMP JUMPDEST DUP1 PUSH2 0x2818 JUMPI POP PUSH2 0x2834 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1A7E 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x296C JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x2996 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x2A74 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2A68 DUP8 DUP3 DUP6 DUP6 PUSH2 0x3117 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xCBD JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2A93 DUP7 DUP4 DUP4 PUSH2 0x3204 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xCBD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2ACC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2AD5 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2AF7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2B45 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 0x6F4 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2B67 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2BB5 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 0x6F4 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2BD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2C30 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 0x6F4 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2C52 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0xE30 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 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2CF3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x2D48 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2D92 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2D8F SWAP2 DUP2 ADD SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2D9E JUMPI PUSH2 0x27F8 PUSH2 0x3D11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1A7E 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x2E61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2E61 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 PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2F19 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x72E JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x72E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2FF4 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF2 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2F8B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x7 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2FB7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2FDC SWAP2 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2FEB SWAP1 POP DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x2F62 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1D07 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1A7E JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3030 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x305C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x30F4 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 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH2 0x3110 DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x3005 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x314E JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x31FB JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3166 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x3177 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x31FB 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 0x31CB 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 0x31F4 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x31FB JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 PUSH2 0x323A PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3248 DUP8 DUP3 DUP9 DUP6 PUSH2 0x3117 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x3262 SWAP1 PUSH2 0x3C62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3284 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x32CA JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x329D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x32CA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x32CA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x32CA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x32AF JUMP JUMPDEST POP PUSH2 0x32D6 SWAP3 SWAP2 POP PUSH2 0x32DA JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x32D6 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x32DB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x331B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x3328 DUP3 PUSH2 0x3BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3335 DUP3 DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x3354 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x3372 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3356 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x338F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33A9 JUMPI PUSH2 0x33A9 PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33C0 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x33D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x341C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3425 DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3453 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x345C DUP7 PUSH2 0x32EF JUMP JUMPDEST SWAP5 POP PUSH2 0x346A PUSH1 0x20 DUP8 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3486 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3492 DUP10 DUP4 DUP11 ADD PUSH2 0x330B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x34A7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x34B3 DUP10 DUP4 DUP11 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x34C8 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x34D5 DUP9 DUP3 DUP10 ADD PUSH2 0x337F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x34F9 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3502 DUP7 PUSH2 0x32EF JUMP JUMPDEST SWAP5 POP PUSH2 0x3510 PUSH1 0x20 DUP8 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3539 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x34D5 DUP9 DUP3 DUP10 ADD PUSH2 0x337F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3559 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3562 DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x357E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x358A DUP8 DUP4 DUP9 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x359F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x35AC DUP7 DUP3 DUP8 ADD PUSH2 0x330B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x35CB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35D4 DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35F0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x35FC DUP9 DUP4 DUP10 ADD PUSH2 0x330B JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3611 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x361D DUP9 DUP4 DUP10 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3632 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x363F DUP8 DUP3 DUP9 ADD PUSH2 0x337F 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 0x365D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3666 DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x367A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3697 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36A0 DUP4 PUSH2 0x32EF 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 0x36C2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x36CB DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x36F5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36FE DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3727 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x363F DUP8 DUP3 DUP9 ADD PUSH2 0x337F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3745 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x374E DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x376E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3785 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3798 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x37A5 DUP3 PUSH2 0x3BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B2 DUP3 DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x37D1 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x37FA JUMPI PUSH2 0x37E6 DUP2 PUSH2 0x32EF JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x37D5 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3810 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x381D DUP6 DUP3 DUP7 ADD PUSH2 0x330B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3838 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3851 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x32EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3872 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1585 DUP2 PUSH2 0x3DB2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1585 DUP2 PUSH2 0x3DB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x38B3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x38CA JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x38D6 DUP12 DUP4 DUP13 ADD PUSH2 0x337F JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x38EB PUSH1 0x40 DUP12 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3915 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3922 DUP11 DUP3 DUP12 ADD PUSH2 0x337F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3942 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3958 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3964 DUP5 DUP3 DUP6 ADD PUSH2 0x337F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3980 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x3990 PUSH1 0x20 DUP6 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x399E PUSH1 0x40 DUP6 ADD PUSH2 0x33EE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39B9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39F7 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x39DB JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3A1A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3C1F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x3A66 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3C1F JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x3AA3 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3C1F JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3ADB PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x39C8 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x3AED DUP2 DUP7 PUSH2 0x39C8 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x3B01 DUP2 DUP6 PUSH2 0x3A02 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3B45 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3A02 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1585 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x39C8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3B76 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x39C8 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3B88 DUP2 DUP6 PUSH2 0x39C8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1585 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A02 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3BBE JUMPI PUSH2 0x3BBE PUSH2 0x3CFB JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3BDB JUMPI PUSH2 0x3BDB PUSH2 0x3CE5 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BFB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C1A JUMPI PUSH2 0x3C1A PUSH2 0x3CE5 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C3A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3C22 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFDE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3C5A JUMPI PUSH2 0x3C5A PUSH2 0x3CE5 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3C76 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x3C97 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3CC3 JUMPI PUSH2 0x3CC3 PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x3CDE JUMPI PUSH2 0x3CDE PUSH2 0x3CE5 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x2A3A JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x3D36 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x3D66 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D7E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3D98 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x3DA7 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x3C9D JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 CALLVALUE BLOCKHASH 0x49 DUP15 0xF8 EQ TIMESTAMP 0x1F 0xC1 0xD 0xEE 0xDD DUP2 BALANCE 0xB6 JUMPI 0xBA 0xFC 0xBF 0x4F SWAP8 0xCC SHL SLOAD POP XOR EXTCODESIZE 0xCB NUMBER PUSH19 0x3F64736F6C6343000804003300000000000000 ",
              "sourceMap": "588:4771:19:-:0;;;1368:689;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2455:602:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2455:602:15;;;1107:62:4;;;;;;;;;;;;1149:13;1157:4;1149:7;;;:13;;:::i;:::-;-1:-1:-1;996:7:3;:15;;-1:-1:-1;;996:15:3;;;2541:22:15;;;;;;;;;;2597:25;;;;;;2778;;;;996:15:3;2813:31:15;;;2873:13;2854:32;;;;-1:-1:-1;3633:73:15;;2651:117;3633:73;;;2609:25:20;;;2650:18;;;2643:34;;;-1:-1:-1;2693:18:20;;2686:34;;;2736:18;;;2729:34;;;;3700:4:15;2779:19:20;;;2772:61;3633:73:15;;;;;;;;;;2581:19:20;;3633:73:15;;3623:84;;;;;;;;2541:22;;2597:25;;2896:85;;3014:4;2991:28;;;;3029:21;;-1:-1:-1;1564:42:19::2;::::0;-1:-1:-1;2072:4:0::2;::::0;-1:-1:-1;1595:10:19::2;::::0;-1:-1:-1;1564:10:19::2;:42::i;:::-;1612:39;745:28;1640:10;1612;:39::i;:::-;1657:48;828:37;1694:10;1657;:48::i;:::-;1711:35;907:24;1735:10;1711;:35::i;:::-;1752;973:24;1776:10;1752;:35::i;:::-;1793:36;1040:25;1818:10;1793;:36::i;:::-;1835:41;1112:29;1864:11:::0;1835:10:::2;:41::i;:::-;-1:-1:-1::0;;;;;1887:29:19;::::2;::::0;;::::2;::::0;:56:::2;;;1942:1;1920:19;-1:-1:-1::0;;;;;1920:23:19::2;;1887:56;1883:133;;;1953:56;1972:15:::0;1989:19;1953:18:::2;:56::i;:::-;2022:30;2037:14:::0;2022::::2;:30::i;:::-;1368:689:::0;;;;588:4771;;8173:86:4;8239:13;;;;:4;;:13;;;;;:::i;:::-;;8173:86;:::o;7474:233:0:-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7552:149;;7595:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7595:29:0;;;;;;;;;:36;;-1:-1:-1;;7595:36:0;7627:4;7595:36;;;7677:12;719:10:12;;640:96;7677:12:0;-1:-1:-1;;;;;7650:40:0;7668:7;-1:-1:-1;;;;;7650:40:0;7662:4;7650:40;;;;;;;;;;7474:233;;:::o;2734:327:10:-;2461:5;-1:-1:-1;;;;;2836:33:10;;;;2828:88;;;;-1:-1:-1;;;2828:88:10;;3795:2:20;2828:88:10;;;3777:21:20;3834:2;3814:18;;;3807:30;3873:34;3853:18;;;3846:62;-1:-1:-1;;;3924:18:20;;;3917:40;3974:19;;2828:88:10;;;;;;;;;-1:-1:-1;;;;;2934:22:10;;2926:60;;;;-1:-1:-1;;;2926:60:10;;4206:2:20;2926:60:10;;;4188:21:20;4245:2;4225:18;;;4218:30;4284:27;4264:18;;;4257:55;4329:18;;2926:60:10;4178:175:20;2926:60:10;3019:35;;;;;;;;;-1:-1:-1;;;;;3019:35:10;;;;;;-1:-1:-1;;;;;3019:35:10;;;;;;;;;;-1:-1:-1;;;2997:57:10;;;;:19;:57;2734:327::o;2378:120:19:-;828:37;2505:16:0;828:37:19;2505:10:0;:16::i;:::-;2472:21:19;;::::1;::::0;:12:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;2378:120:::0;;:::o;3334:103:0:-;3400:30;3411:4;719:10:12;3400::0;:30::i;:::-;3334:103;:::o;3718:492::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;3801:403;;3989:41;4017:7;-1:-1:-1;;;;;3989:41:0;4027:2;3989:19;;;;;:41;;:::i;:::-;4101:38;4129:4;4136:2;4101:19;;;;;:38;;:::i;:::-;3896:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:265:0;;;;;;;;;;-1:-1:-1;;;3844:349:0;;;;;;;:::i;1652:441:13:-;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;-1:-1:-1;;;;;1774:25:13;;;;;-1:-1:-1;;;1774:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:13;;1752:47;;-1:-1:-1;;;1809:6:13;1816:1;1809:9;;;;;;-1:-1:-1;;;1809:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1809:15:13;;;;;;;;;-1:-1:-1;;;1834:6:13;1841:1;1834:9;;;;;;-1:-1:-1;;;1834:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1834:15:13;;;;;;;;-1:-1:-1;1864:9:13;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:13;1951:3;1943:11;1930:25;;;;;-1:-1:-1;;;1930:25:13;;;;;;;;;;;;1918:6;1925:1;1918:9;;;;;;-1:-1:-1;;;1918:9:13;;;;;;;;;;;;:37;-1:-1:-1;;;;;1918:37:13;;;;;;;;-1:-1:-1;1979:1:13;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:13;;2000:55;;;;-1:-1:-1;;;2000:55:13;;3434:2:20;2000:55:13;;;3416:21:20;;;3453:18;;;3446:30;3512:34;3492:18;;;3485:62;3564:18;;2000:55:13;3406:182:20;2000:55:13;2079:6;1652:441;-1:-1:-1;;;1652:441:13:o;588:4771:19:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;588:4771:19;;;-1:-1:-1;588:4771:19;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:177:20;93:13;;-1:-1:-1;;;;;135:31:20;;125:42;;115:2;;181:1;178;171:12;115:2;74:117;;;:::o;196:175::-;274:13;;-1:-1:-1;;;;;316:30:20;;306:41;;296:2;;361:1;358;351:12;376:1178;482:6;490;498;506;559:3;547:9;538:7;534:23;530:33;527:2;;;581:6;573;566:22;527:2;609:40;639:9;609:40;:::i;:::-;693:2;678:18;;672:25;599:50;;-1:-1:-1;;;;;;746:14:20;;;743:2;;;778:6;770;763:22;743:2;821:6;810:9;806:22;796:32;;866:7;859:4;855:2;851:13;847:27;837:2;;893:6;885;878:22;837:2;927;921:9;949:2;945;942:10;939:2;;;955:18;;:::i;:::-;1030:2;1024:9;998:2;1084:13;;-1:-1:-1;;1080:22:20;;;1104:2;1076:31;1072:40;1060:53;;;1128:18;;;1148:22;;;1125:46;1122:2;;;1174:18;;:::i;:::-;1214:10;1210:2;1203:22;1249:2;1241:6;1234:18;1289:7;1284:2;1279;1275;1271:11;1267:20;1264:33;1261:2;;;1315:6;1307;1300:22;1261:2;1333:55;1385:2;1380;1372:6;1368:15;1363:2;1359;1355:11;1333:55;:::i;:::-;1407:6;1397:16;;;;;;;1432:49;1477:2;1466:9;1462:18;1432:49;:::i;:::-;1422:59;;1500:48;1544:2;1533:9;1529:18;1500:48;:::i;:::-;1490:58;;517:1037;;;;;;;:::o;1559:786::-;1970:25;1965:3;1958:38;1940:3;2025:6;2019:13;2041:62;2096:6;2091:2;2086:3;2082:12;2075:4;2067:6;2063:17;2041:62;:::i;:::-;-1:-1:-1;;;2162:2:20;2122:16;;;2154:11;;;2147:40;2212:13;;2234:63;2212:13;2283:2;2275:11;;2268:4;2256:17;;2234:63;:::i;:::-;2317:17;2336:2;2313:26;;1948:397;-1:-1:-1;;;;1948:397:20:o;2844:383::-;2993:2;2982:9;2975:21;2956:4;3025:6;3019:13;3068:6;3063:2;3052:9;3048:18;3041:34;3084:66;3143:6;3138:2;3127:9;3123:18;3118:2;3110:6;3106:15;3084:66;:::i;:::-;3211:2;3190:15;-1:-1:-1;;3186:29:20;3171:45;;;;3218:2;3167:54;;2965:262;-1:-1:-1;;2965:262:20:o;4358:128::-;4398:3;4429:1;4425:6;4422:1;4419:13;4416:2;;;4435:18;;:::i;:::-;-1:-1:-1;4471:9:20;;4406:80::o;4491:168::-;4531:7;4597:1;4593;4589:6;4585:14;4582:1;4579:21;4574:1;4567:9;4560:17;4556:45;4553:2;;;4604:18;;:::i;:::-;-1:-1:-1;4644:9:20;;4543:116::o;4664:258::-;4736:1;4746:113;4760:6;4757:1;4754:13;4746:113;;;4836:11;;;4830:18;4817:11;;;4810:39;4782:2;4775:10;4746:113;;;4877:6;4874:1;4871:13;4868:2;;;4912:1;4903:6;4898:3;4894:16;4887:27;4868:2;;4717:205;;;:::o;4927:136::-;4966:3;4994:5;4984:2;;5003:18;;:::i;:::-;-1:-1:-1;;;5039:18:20;;4974:89::o;5068:380::-;5147:1;5143:12;;;;5190;;;5211:2;;5265:4;5257:6;5253:17;5243:27;;5211:2;5318;5310:6;5307:14;5287:18;5284:38;5281:2;;;5364:10;5359:3;5355:20;5352:1;5345:31;5399:4;5396:1;5389:15;5427:4;5424:1;5417:15;5281:2;;5123:325;;;:::o;5453:127::-;5514:10;5509:3;5505:20;5502:1;5495:31;5545:4;5542:1;5535:15;5569:4;5566:1;5559:15;5585:127;5646:10;5641:3;5637:20;5634:1;5627:31;5677:4;5674:1;5667:15;5701:4;5698:1;5691:15;5617:95;588:4771:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:33098:20",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:20",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:20",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:20"
                              },
                              "nodeType": "YulIf",
                              "src": "111:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:20",
                            "type": ""
                          }
                        ],
                        "src": "14:196:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "279:691:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "328:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "337:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "344:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "330:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "330:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "307:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "315:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "303:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "303:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "322:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "299:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "299:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "292:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "292:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "289:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "361:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "384:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "371:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "371:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "365:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "410:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "404:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "423:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "473:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "433:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "427:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "485:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "505:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "499:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "499:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "489:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "537:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "517:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "517:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "557:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "568:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "561:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "590:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "598:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "583:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "583:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "583:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "610:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "621:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "610:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "641:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "656:6:20"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "664:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "652:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "652:15:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "645:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "721:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "730:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "737:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "723:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "723:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "723:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "690:6:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "702:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "705:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "698:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "698:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "686:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "686:23:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "711:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "682:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "682:32:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "716:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "676:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "754:14:20",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "763:5:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "758:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "822:118:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "843:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "861:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "848:12:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "848:17:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "836:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "836:30:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "836:30:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "879:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "895:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "886:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "879:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "911:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "922:3:20"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "927:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "918:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "911:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "788:1:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "791:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "785:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "785:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "795:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "797:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "809:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "802:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "802:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "797:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "781:3:20",
                                "statements": []
                              },
                              "src": "777:163:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "949:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "958:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "253:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "261:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "269:5:20",
                            "type": ""
                          }
                        ],
                        "src": "215:755:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1027:523:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1076:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1085:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1092:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1078:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1078:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1078:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1055:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1063:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1051:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1051:17:20"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:3:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1047:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1047:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1040:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1037:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1109:30:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1132:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1119:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1119:20:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1113:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1178:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1180:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1180:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1180:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1154:2:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1158:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1151:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1151:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1148:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1209:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1229:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1223:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1223:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1213:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1261:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1281:2:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1285:4:20",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1277:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1277:13:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1296:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1292:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1292:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1273:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1273:27:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1302:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1269:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1269:38:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "1241:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1241:67:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1241:67:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1324:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1317:18:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1383:24:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1392:5:20"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1399:5:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1385:20:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1385:20:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1358:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1366:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1354:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1354:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1371:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1350:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1350:26:20"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1378:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1347:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1344:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1433:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1441:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1429:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1429:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1452:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1460:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1448:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1448:17:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1467:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1416:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1416:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1416:54:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1494:6:20"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1502:2:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1490:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1490:15:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1507:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1486:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1486:26:20"
                                  },
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1514:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1479:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1479:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1479:41:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1529:15:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1538:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1001:6:20",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1009:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1017:5:20",
                            "type": ""
                          }
                        ],
                        "src": "975:575:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1603:131:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1613:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1635:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1622:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1622:20:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1613:5:20"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1712:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1721:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1724:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1714:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1714:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1714:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1664:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1675:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1682:26:20",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1671:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1671:38:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1661:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1661:49:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1654:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1654:57:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1651:2:20"
                            }
                          ]
                        },
                        "name": "abi_decode_uint96",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1582:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1593:5:20",
                            "type": ""
                          }
                        ],
                        "src": "1555:179:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1826:183:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1872:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1881:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1889:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1874:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1874:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1874:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1847:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1856:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1868:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1839:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1839:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "1836:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1907:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1936:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1917:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1917:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1907:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1955:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1988:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1999:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1984:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1984:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1965:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1965:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1955:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1784:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1795:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1807:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1815:6:20",
                            "type": ""
                          }
                        ],
                        "src": "1739:270:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2211:786:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2258:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2267:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2275:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2260:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2260:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2260:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2241:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2228:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2228:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2253:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2224:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2224:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2221:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2293:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2322:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2303:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2303:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2293:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2341:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2374:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2385:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2370:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2370:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2351:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2351:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2341:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2398:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2429:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2440:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2425:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2425:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2412:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2412:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2402:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2453:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2463:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2457:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2508:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2517:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2525:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2510:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2510:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2510:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2496:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2504:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2493:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2493:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2490:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2543:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2586:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2597:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2582:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2582:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2606:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2553:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2553:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2543:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2623:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2656:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2667:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2652:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2652:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2639:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2639:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2627:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2700:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2709:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2717:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2702:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2702:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2702:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2686:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2696:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2683:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2683:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2680:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2735:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2778:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2789:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2774:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2774:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2800:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2745:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2745:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2735:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2817:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2850:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2846:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2846:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2833:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2821:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2895:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2904:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2912:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2897:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2897:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2897:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2881:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2891:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2878:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2878:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "2875:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2930:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:9:20"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2972:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2957:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2957:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2983:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2940:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2940:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2930:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2145:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2156:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2168:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2176:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2184:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2192:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2200:6:20",
                            "type": ""
                          }
                        ],
                        "src": "2014:983:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3149:479:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3196:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3205:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3213:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3198:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3198:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3198:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3170:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3179:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3166:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3166:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3191:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3159:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3231:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3260:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3241:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3241:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3231:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3279:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3312:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3323:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3308:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3308:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3289:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3289:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3279:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3336:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3363:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3374:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3359:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3359:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3346:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3346:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3387:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3414:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3425:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3410:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3410:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3397:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3397:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3387:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3438:47:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3469:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3480:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3465:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3465:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3452:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3452:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3442:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3528:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3537:6:20"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3545:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3530:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3530:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3530:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3500:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3508:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3497:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3497:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3494:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3563:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3594:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3590:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3590:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3614:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3573:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3573:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3563:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3083:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3094:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3106:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3114:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3122:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3130:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3138:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3002:626:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3787:545:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3833:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3842:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3850:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3835:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3835:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3835:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3808:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3817:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3804:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3804:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3829:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3800:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3800:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "3797:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3868:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3897:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3878:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3878:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3868:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3916:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3947:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3958:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3943:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3943:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3930:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3930:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3920:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3971:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3981:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3975:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4026:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4035:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4043:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4028:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4028:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4028:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4014:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4022:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4011:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4011:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4008:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4061:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4104:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4115:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4100:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4100:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4124:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4071:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4071:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4061:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4141:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4174:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4185:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4170:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4170:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4157:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4157:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4145:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4218:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4227:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4235:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4220:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4220:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4220:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4204:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4214:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4201:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4201:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4198:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4253:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4296:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4307:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4292:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4292:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4318:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4263:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4263:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4253:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3737:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3748:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3760:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3768:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3776:6:20",
                            "type": ""
                          }
                        ],
                        "src": "3633:699:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4517:728:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4564:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4573:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4581:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4566:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4566:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4566:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4538:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4547:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4534:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4534:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4559:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4530:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4530:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4527:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4599:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4628:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4609:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4609:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4599:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4647:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4678:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4689:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4674:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4674:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4661:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4661:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4651:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4702:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4712:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4706:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4757:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4766:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4774:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4759:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4759:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4759:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4745:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4753:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4739:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4792:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4835:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4846:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4831:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4831:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4855:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4802:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4802:61:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4792:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4872:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4916:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4888:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4888:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4876:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4949:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4958:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4966:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4951:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4951:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4951:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4935:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4932:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4932:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "4929:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4984:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5027:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5038:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5023:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5023:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5049:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4994:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4984:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5066:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5099:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5110:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5095:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5095:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5082:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5082:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5070:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5143:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "5152:6:20"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "5160:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5145:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5145:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5145:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5129:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5139:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5126:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5126:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5123:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5178:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5209:9:20"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5220:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5205:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5205:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5231:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5188:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5188:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5178:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4459:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4470:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4482:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4490:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4498:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4506:6:20",
                            "type": ""
                          }
                        ],
                        "src": "4337:908:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5334:283:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5380:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5389:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5397:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5382:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5382:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5382:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5355:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5364:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5351:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5351:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5376:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5347:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5347:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5344:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5415:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5444:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5425:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5425:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5415:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5463:45:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5493:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5504:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5489:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5489:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5476:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5476:32:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5467:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5561:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5570:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5578:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5563:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5563:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5563:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5530:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5551:5:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5544:6:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5544:13:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5537:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5537:21:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5527:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5527:32:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5520:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5520:40:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5517:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5596:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5606:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5596:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5292:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5303:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5315:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5323:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5250:367:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5709:177:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5755:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5764:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5772:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5757:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5757:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5757:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5730:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5739:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5726:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5726:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5751:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5722:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5722:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "5719:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5790:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5819:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5800:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5800:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5790:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5838:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5876:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5861:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5861:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5848:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5848:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5838:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5667:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5678:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5690:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5698:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5622:264:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5995:228:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6041:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6050:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6058:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6043:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6043:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6043:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6016:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6025:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6012:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6012:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6037:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6008:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6008:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6005:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6076:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6105:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6086:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6086:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6076:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6124:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6151:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6162:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6147:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6147:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6134:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6134:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6124:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6175:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6202:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6213:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6198:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6198:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6185:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6185:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6175:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5945:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5956:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5968:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5976:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5984:6:20",
                            "type": ""
                          }
                        ],
                        "src": "5891:332:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6358:421:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6405:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6414:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6422:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6407:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6407:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6379:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6388:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6375:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6375:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6400:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6371:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6371:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6368:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6440:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6469:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6450:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6450:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6488:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6515:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6526:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6511:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6511:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6498:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6498:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6488:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6539:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6566:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6577:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6562:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6562:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6549:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6549:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6539:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6590:46:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6621:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6632:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6617:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6617:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6604:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6604:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6594:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6679:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6688:6:20"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6696:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6681:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6681:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6681:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6651:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6659:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6648:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6648:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6645:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6714:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6745:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6756:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6741:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6741:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6765:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6724:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6724:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6714:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6300:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6311:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6323:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6331:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6339:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6347:6:20",
                            "type": ""
                          }
                        ],
                        "src": "6228:551:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6870:182:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6916:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6925:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6933:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6918:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6918:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6918:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6891:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6900:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6887:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6887:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6912:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6883:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6883:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "6880:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6951:39:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6961:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6961:29:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6951:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6999:47:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7031:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7042:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7027:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7027:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint96",
                                  "nodeType": "YulIdentifier",
                                  "src": "7009:17:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7009:37:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6999:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint96",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6828:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6839:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6851:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6859:6:20",
                            "type": ""
                          }
                        ],
                        "src": "6784:268:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7194:1137:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7240:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7249:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7257:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7242:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7242:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7242:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7215:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7224:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7211:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7211:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7236:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7207:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7207:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7204:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7275:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7302:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7289:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7289:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7279:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7321:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7331:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7325:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7376:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7385:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7393:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7378:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7378:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7378:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7364:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7372:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7361:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7361:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7358:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7411:32:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7425:9:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7436:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7421:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7421:22:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7415:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7491:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7500:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7508:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7493:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7493:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7493:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7470:2:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7474:4:20",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7466:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7466:13:20"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7481:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7462:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7462:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7455:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7455:35:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7452:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7526:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7549:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7536:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7536:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7530:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7561:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7571:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7565:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7584:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7634:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_allocation_size_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7594:39:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7594:43:20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "7588:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7646:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7666:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7660:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7660:9:20"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7650:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7698:6:20"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "7706:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "7678:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7678:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7678:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7718:17:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7729:6:20"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7722:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7751:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7759:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7744:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7744:18:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7744:18:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7771:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7782:6:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7790:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7778:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7778:15:20"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7771:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7802:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7817:2:20"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "7821:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7813:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7813:11:20"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7806:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7878:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7887:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7895:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7880:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7880:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7880:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7847:2:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7855:1:20",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7858:2:20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7851:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7851:10:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7843:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7843:19:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7864:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7839:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7839:28:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7869:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7836:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7836:41:20"
                              },
                              "nodeType": "YulIf",
                              "src": "7833:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7913:15:20",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "7922:6:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7917:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7982:124:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "8003:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "8027:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "8008:18:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8008:23:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7996:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7996:36:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7996:36:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8045:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "8056:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8061:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8052:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8052:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "8045:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8077:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "8088:3:20"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8093:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8084:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8084:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8077:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7948:1:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7951:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7945:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7945:9:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7955:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7957:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7966:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7969:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7962:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7962:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7957:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7941:3:20",
                                "statements": []
                              },
                              "src": "7937:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8115:16:20",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8125:6:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8115:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8140:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8173:9:20"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "8184:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8169:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8169:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8156:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8156:32:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8144:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8217:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8226:6:20"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8234:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8219:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8219:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8219:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8203:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8213:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8200:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8200:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8197:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8252:73:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8295:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8306:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8291:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8291:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8317:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8262:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8262:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8252:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7152:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7163:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7175:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7183:6:20",
                            "type": ""
                          }
                        ],
                        "src": "7057:1274:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8406:120:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8452:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8461:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8469:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8454:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8454:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8454:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8427:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8436:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8423:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8423:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8448:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8419:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8419:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8416:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8487:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8510:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8497:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8497:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8487:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8372:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8383:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8395:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8336:190:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8618:177:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8664:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8673:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8681:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8666:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8666:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8666:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8639:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8648:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8635:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8635:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8660:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8631:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8631:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8628:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8699:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8722:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8709:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8709:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8699:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8741:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8774:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8785:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8770:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8770:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8751:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8751:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8741:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8576:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8587:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8599:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8607:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8531:264:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8869:186:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8915:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8924:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8932:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8917:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8917:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8917:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8890:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8899:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8886:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8886:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8911:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8882:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8882:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "8879:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8950:36:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8976:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8963:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8963:23:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8954:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9019:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8995:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8995:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8995:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9034:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9044:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9034:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8835:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8846:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8858:6:20",
                            "type": ""
                          }
                        ],
                        "src": "8800:255:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9140:179:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9186:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9195:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9203:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9188:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9188:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9188:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9161:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9170:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9157:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9157:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9182:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9153:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9153:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9150:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9221:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9240:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9234:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9234:16:20"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9225:5:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9283:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9259:23:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9259:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9259:30:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9298:15:20",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9308:5:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9298:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9106:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9117:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9129:6:20",
                            "type": ""
                          }
                        ],
                        "src": "9060:259:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9515:729:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9562:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9571:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9579:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9564:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9564:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9564:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9536:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9545:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9532:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9532:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9557:3:20",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9528:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9528:33:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9525:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9597:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9624:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9611:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9611:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9601:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9643:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9653:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9647:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9698:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9707:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9715:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9700:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9700:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9700:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9686:6:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9694:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9683:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9683:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "9680:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9733:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9764:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9775:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9760:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9760:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9784:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9743:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9743:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9733:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9801:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9828:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9839:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9824:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9824:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9811:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9811:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9801:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9852:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9885:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9896:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9881:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9881:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9862:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9862:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9852:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9909:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9936:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9947:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9932:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9932:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9919:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9919:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9909:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9960:43:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9987:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9998:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9983:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9983:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9970:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9970:33:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9960:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10012:43:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10039:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10050:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10035:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10035:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10022:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10022:33:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "10012:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10064:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10097:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10108:3:20",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10093:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10093:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10080:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10080:33:20"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10068:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10142:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "10151:6:20"
                                        },
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "10159:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10144:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10144:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10144:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10128:8:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10138:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10125:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10125:16:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10122:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10177:61:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10208:9:20"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10219:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10204:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10204:24:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10230:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10187:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10187:51:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10177:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_uint256t_addresst_uint256t_uint256t_uint256t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9433:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9444:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9456:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9464:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9472:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9480:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9488:6:20",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "9496:6:20",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "9504:6:20",
                            "type": ""
                          }
                        ],
                        "src": "9324:920:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10329:261:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10375:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10384:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10392:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10377:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10377:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10377:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10350:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10359:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10346:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10346:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10371:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10342:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10342:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10339:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10410:37:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10437:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10424:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10424:23:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10414:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10490:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10499:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10507:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10492:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10492:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10492:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10462:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10470:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10459:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10459:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10456:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10525:59:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10556:9:20"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10567:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10552:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10552:22:20"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10576:7:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10535:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10535:49:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10525:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10295:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10306:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10318:6:20",
                            "type": ""
                          }
                        ],
                        "src": "10249:341:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10665:120:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10711:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10720:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10728:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10713:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10713:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10713:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10686:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10695:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10682:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10682:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10707:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10678:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10678:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10675:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10746:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10769:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10756:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10756:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10746:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10631:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10642:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10654:6:20",
                            "type": ""
                          }
                        ],
                        "src": "10595:190:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10893:233:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10939:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10948:6:20"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10956:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10941:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10941:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10941:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10914:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10923:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10910:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10910:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10935:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10906:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10906:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "10903:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10974:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10997:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10984:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10984:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10974:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11016:48:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11049:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11060:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11045:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11045:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11026:18:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11026:38:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11016:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11073:47:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11105:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11116:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11101:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11101:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint96",
                                  "nodeType": "YulIdentifier",
                                  "src": "11083:17:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11083:37:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11073:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_uint96",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10843:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10854:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10866:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10874:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10882:6:20",
                            "type": ""
                          }
                        ],
                        "src": "10790:336:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11218:171:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11264:26:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11273:6:20"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11281:6:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11266:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11266:22:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11266:22:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11239:7:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11248:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11235:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11235:23:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11260:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11231:32:20"
                              },
                              "nodeType": "YulIf",
                              "src": "11228:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11299:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11322:9:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11309:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11309:23:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11299:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11341:42:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11368:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11379:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11364:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11364:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11351:12:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11351:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11341:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11176:9:20",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11187:7:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11199:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11207:6:20",
                            "type": ""
                          }
                        ],
                        "src": "11131:258:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11455:376:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11465:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11485:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11479:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11479:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11469:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11507:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11512:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11500:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11500:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11500:19:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11528:14:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11538:4:20",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11532:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11551:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11562:3:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11567:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11558:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11558:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11551:3:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11579:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11597:5:20"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11604:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11593:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11593:14:20"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11583:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11616:12:20",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "11625:3:20"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11620:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11686:120:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11707:3:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "11718:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "11712:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11712:13:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11700:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11700:26:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11700:26:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11739:19:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11750:3:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11755:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11746:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11746:12:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11739:3:20"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11771:25:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11785:6:20"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11793:2:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11781:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11781:15:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11771:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11648:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11651:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11645:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11645:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11659:18:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11661:14:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11670:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11673:1:20",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11666:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11666:9:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11661:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11641:3:20",
                                "statements": []
                              },
                              "src": "11637:169:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11815:10:20",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "11822:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "11815:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_uint256_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11432:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "11439:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11447:3:20",
                            "type": ""
                          }
                        ],
                        "src": "11394:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11885:208:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11895:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11915:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11909:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11909:12:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11899:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11937:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11942:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11930:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11930:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11930:19:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11984:5:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11991:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11980:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11980:16:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12002:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12007:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11998:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11998:14:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12014:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "11958:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11958:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11958:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12030:57:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12045:3:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "12058:6:20"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12066:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "12054:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12054:15:20"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12075:2:20",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "12071:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12071:7:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "12050:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12050:29:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12041:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12041:39:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12082:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12037:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12037:50:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12030:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11862:5:20",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "11869:3:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11877:3:20",
                            "type": ""
                          }
                        ],
                        "src": "11836:257:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12346:196:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12363:3:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12368:66:20",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12356:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12356:79:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12356:79:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12455:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12460:1:20",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12451:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12451:11:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12464:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12444:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12444:27:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12444:27:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12491:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12496:2:20",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12487:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12487:12:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12501:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12480:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12480:28:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12480:28:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12517:19:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12528:3:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12533:2:20",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12524:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12524:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12517:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "12314:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12319:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12327:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12338:3:20",
                            "type": ""
                          }
                        ],
                        "src": "12098:444:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12936:397:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12953:3:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12958:25:20",
                                    "type": "",
                                    "value": "AccessControl: account "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12946:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12946:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12946:38:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12993:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13013:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13007:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13007:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12997:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13055:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13063:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13051:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13051:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13074:3:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13079:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13070:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13070:12:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13084:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13029:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13029:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13029:62:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13100:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13114:3:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13119:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13110:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13110:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13104:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13146:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13150:2:20",
                                        "type": "",
                                        "value": "23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13142:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13142:11:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13155:19:20",
                                    "type": "",
                                    "value": " is missing role "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13135:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13135:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13135:40:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13184:29:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13206:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13200:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13200:13:20"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13188:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13248:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13256:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13244:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13244:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13267:2:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13271:2:20",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13263:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13263:11:20"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13276:8:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13222:21:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13222:63:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13222:63:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13294:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13309:2:20"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13313:8:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13305:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13305:17:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13324:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13301:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13301:26:20"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13294:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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": "12904:3:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12909:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12917:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12928:3:20",
                            "type": ""
                          }
                        ],
                        "src": "12547:786:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13439:125:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13449:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13461:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13472:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13457:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13457:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13449:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13491:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13506:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13514:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13502:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13502:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13484:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13484:74:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13484:74:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13408:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13419:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13430:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13338:226:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13900:518:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13910:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13920:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13914:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13978:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13993:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14001:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13989:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13989:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13971:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13971:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13971:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14025:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14036:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14021:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14021:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14045:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14053:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14041:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14041:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14014:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14014:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14014:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14077:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14088:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14073:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14073:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14093:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14066:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14066:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14066:31:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14106:71:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14149:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14161:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14172:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14157:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14157:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14120:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14120:57:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14110:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14197:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14208:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14193:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14193:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14217:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14225:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14213:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14213:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14186:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14186:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14186:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14245:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14288:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14296:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14259:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14259:44:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "14249:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14323:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14334:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14319:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14319:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14344:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14352:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14340:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14340:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14312:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14312:51:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14312:51:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14372:40:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "14397:6:20"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14405:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "14380:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14380:32:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14372:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13837:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13848:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13856:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13864:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13872:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13880:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13891:4:20",
                            "type": ""
                          }
                        ],
                        "src": "13569:849:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14654:352:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14664:52:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14674:42:20",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14668:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14732:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14747:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14755:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14743:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14743:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14725:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14725:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14725:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14779:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14790:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14775:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14775:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14799:6:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14807:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14795:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14795:15:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14768:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14768:43:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14768:43:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14831:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14842:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14827:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14827:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14847:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14820:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14820:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14820:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14874:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14885:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14870:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14870:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14890:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14863:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14863:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14863:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14917:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14928:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14913:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14913:19:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14934:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14906:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14906:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14906:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14947:53:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "14972:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14984:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14995:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14980:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14980:19:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "14955:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14955:45:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14947:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14591:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14602:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14610:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14618:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14626:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14634:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14645:4:20",
                            "type": ""
                          }
                        ],
                        "src": "14423:583:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15140:168:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15150:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15162:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15173:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15158:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15158:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15150:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15192:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15207:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15215:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15203:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15203:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15185:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15185:74:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15185:74:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15279:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15290:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15275:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15275:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15295:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15268:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15268:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15268:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15101:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15112:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15120:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15131:4:20",
                            "type": ""
                          }
                        ],
                        "src": "15011:297:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15464:110:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15481:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15492:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15474:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15474:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15474:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15504:64:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15541:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15553:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15564:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15549:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15549:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "15512:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15512:56:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15504:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "15433:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15444:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15455:4:20",
                            "type": ""
                          }
                        ],
                        "src": "15313:261:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15808:236:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15825:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15836:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15818:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15818:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15818:21:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15848:70:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15891:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15903:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15914:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15899:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15899:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "15862:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15862:56:20"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15852:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15938:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15949:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15934:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15934:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15958:6:20"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15966:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15954:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15954:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15927:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15927:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15927:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15986:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16023:6:20"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16031:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_uint256_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "15994:28:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15994:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15986:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15769:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15780:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15788:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15799:4:20",
                            "type": ""
                          }
                        ],
                        "src": "15579:465:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16144:92:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16154:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16166:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16177:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16162:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16162:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16154:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16196:9:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "16221:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "16214:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16214:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "16207:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16207:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16189:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16189:41:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16189:41:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16113:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16124:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16135:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16049:187:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16342:76:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16352:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16364:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16375:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16360:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16360:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16352:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16394:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16405:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16387:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16387:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16387:25:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16311:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16322:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16333:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16241:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16636:299:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16646:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16658:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16669:3:20",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16654:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16654:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16646:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16689:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16700:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16682:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16682:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16682:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16727:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16738:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16723:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16723:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16743:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16716:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16716:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16716:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16770:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16781:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16766:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16766:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16786:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16759:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16759:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16759:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16813:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16824:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16809:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16809:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16829:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16802:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16802:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16802:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16856:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16867:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16852:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16852:19:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "16877:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16885:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16873:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16873:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16845:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16845:84:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16845:84:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16573:9:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16584:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16592:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16600:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16608:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16616:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16627:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16423:512:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17209:387:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17219:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17231:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17242:3:20",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17227:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17227:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17219:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17262:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17273:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17255:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17255:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17255:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17300:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17311:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17296:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17296:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17316:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17289:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17289:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17289:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17343:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17354:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17339:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17339:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17363:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17371:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17359:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17359:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17332:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17332:83:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17332:83:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17435:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17446:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17431:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17431:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17451:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17424:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17424:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17424:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17478:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17489:3:20",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17474:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17474:19:20"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "17495:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17467:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17467:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17467:35:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17522:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17533:3:20",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17518:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17518:19:20"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "17539:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17511:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17511:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17511:35:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17566:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17577:3:20",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17562:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17562:19:20"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "17583:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17555:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17555:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17555:35:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__to_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17130:9:20",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "17141:6:20",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "17149:6:20",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17157:6:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17165:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17173:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17181:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17189:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17200:4:20",
                            "type": ""
                          }
                        ],
                        "src": "16940:656:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17782:217:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17792:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17804:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17815:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17800:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17800:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17792:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17835:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17846:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17828:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17828:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17828:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17873:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17884:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17869:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17869:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17893:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17901:4:20",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17889:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17889:17:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17862:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17862:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17862:45:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17927:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17938:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17923:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17923:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17943:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17916:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17916:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17916:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17970:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17981:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17966:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17966:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17986:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17959:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17959:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17959:34:20"
                            }
                          ]
                        },
                        "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": "17727:9:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17738:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17746:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17754:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17762:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17773:4:20",
                            "type": ""
                          }
                        ],
                        "src": "17601:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18125:98:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18142:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18153:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18135:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18135:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18135:21:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18165:52:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18190:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18202:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18213:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18198:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18198:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "18173:16:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18173:44:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18165:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18094:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18105:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18116:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18004:219:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18402:174:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18419:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18430:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18412:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18412:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18412:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18453:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18464:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18449:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18449:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18469:2:20",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18442:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18442:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18442:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18492:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18503:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18488:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18488:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18508:26:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18481:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18481:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18481:54:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18544:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18556:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18567:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18552:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18552:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18544:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18379:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18393:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18228:348:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18755:242:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18772:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18783:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18765:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18765:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18765:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18806:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18817:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18802:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18802:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18822:2:20",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18795:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18795:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18795:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18845:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18856:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18841:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18841:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18861:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to non ERC1155"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18834:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18834:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18834:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18916:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18927:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18912:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18912:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18932:22:20",
                                    "type": "",
                                    "value": "Receiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18905:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18905:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18905:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18964:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18976:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18987:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18972:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18972:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18964:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18732:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18746:4:20",
                            "type": ""
                          }
                        ],
                        "src": "18581:416:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19176:237:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19193:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19204:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19186:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19186:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19186:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19227:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19238:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19223:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19223:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19243:2:20",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19216:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19216:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19216:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19266:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19277:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19262:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19262:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19282:34:20",
                                    "type": "",
                                    "value": "ERC1155: caller is not token own"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19255:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19255:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19255:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19337:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19348:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19333:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19333:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19353:17:20",
                                    "type": "",
                                    "value": "er nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19326:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19326:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19326:45:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19380:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19392:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19403:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19388:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19388:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19380:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19153:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19167:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19002:411:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19592:182:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19609:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19620:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19602:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19602:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19602:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19643:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19654:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19639:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19639:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19659:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19632:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19632:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19632:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19682:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19693:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19678:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19678:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19698:34:20",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19671:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19671:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19671:62:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19742:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19754:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19765:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19750:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19750:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19742:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19569:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19583:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19418:356:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19953:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19970:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19981:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19963:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19963:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19963:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20004:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20015:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20000:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20000:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20020:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19993:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19993:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19993:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20043:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20054:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20039:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20039:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20059:34:20",
                                    "type": "",
                                    "value": "ERC1155: ERC1155Receiver rejecte"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20032:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20032:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20032:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20114:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20125:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20110:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20110:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20130:10:20",
                                    "type": "",
                                    "value": "d tokens"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20103:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20103:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20103:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20150:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20162:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20173:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20158:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20158:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20150:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19930:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19944:4:20",
                            "type": ""
                          }
                        ],
                        "src": "19779:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20362:170:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20379:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20390:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20372:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20372:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20372:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20413:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20424:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20409:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20409:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20429:2:20",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20402:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20402:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20402:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20452:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20463:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20448:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20448:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20468:22:20",
                                    "type": "",
                                    "value": "Pausable: not paused"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20441:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20441:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20441:50:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20500:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20512:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20523:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20508:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20508:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20500:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20339:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20353:4:20",
                            "type": ""
                          }
                        ],
                        "src": "20188:344:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20711:181:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20728:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20739:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20721:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20721:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20721:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20762:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20773:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20758:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20758:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20778:2:20",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20751:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20751:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20751:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20801:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20812:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20797:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20797:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20817:33:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20790:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20790:61:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20790:61:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20860:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20872:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20883:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20868:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20868:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20860:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20688:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20702:4:20",
                            "type": ""
                          }
                        ],
                        "src": "20537:355:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21071:226:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21088:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21099:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21081:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21081:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21081:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21122:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21133:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21118:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21118:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21138:2:20",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21111:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21111:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21111:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21161:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21172:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21157:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21157:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21177:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn amount exceeds bal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21150:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21150:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21150:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21232:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21243:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21228:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21228:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21248:6:20",
                                    "type": "",
                                    "value": "ance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21221:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21221:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21221:34:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21264:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21276:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21287:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21272:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21272:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21264:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21048:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21062:4:20",
                            "type": ""
                          }
                        ],
                        "src": "20897:400:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21476:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21493:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21504:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21486:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21486:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21486:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21527:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21538:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21523:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21523:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21543:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21516:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21516:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21516:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21566:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21577:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21562:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21562:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21582:34:20",
                                    "type": "",
                                    "value": "ERC1155: address zero is not a v"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21555:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21555:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21555:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21637:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21648:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21633:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21633:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21653:12:20",
                                    "type": "",
                                    "value": "alid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21626:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21626:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21626:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21675:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21687:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21698:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21683:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21683:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21675:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21453:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21467:4:20",
                            "type": ""
                          }
                        ],
                        "src": "21302:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21887:224:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21904:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21915:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21897:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21897:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21897:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21938:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21949:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21934:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21934:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21954:2:20",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21927:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21927:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21927:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21977:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21988:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21973:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21973:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21993:34:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21966:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21966:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21966:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22048:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22059:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22044:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22044:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22064:4:20",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22037:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22037:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22037:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22078:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22090:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22101:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22086:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22086:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22078:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21864:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21878:4:20",
                            "type": ""
                          }
                        ],
                        "src": "21713:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22290:174:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22307:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22318:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22300:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22300:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22300:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22341:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22352:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22337:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22337:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22357:2:20",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22330:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22330:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22330:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22380:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22391:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22376:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22376:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22396:26:20",
                                    "type": "",
                                    "value": "Transfer pass is expired"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22369:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22369:54:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22369:54:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22432:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22444:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22455:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22440:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22440:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22432:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22267:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22281:4:20",
                            "type": ""
                          }
                        ],
                        "src": "22116:348:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22643:166:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22660:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22671:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22653:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22653:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22653:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22694:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22705:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22690:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22690:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22710:2:20",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22683:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22683:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22683:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22733:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22744:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22729:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22729:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22749:18:20",
                                    "type": "",
                                    "value": "Pausable: paused"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22722:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22722:46:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22722:46:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22777:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22789:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22800:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22785:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22785:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22777:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22620:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22634:4:20",
                            "type": ""
                          }
                        ],
                        "src": "22469:340:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22988:227:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23005:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23016:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22998:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22998:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22998:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23039:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23050:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23035:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23035:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23055:2:20",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23028:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23028:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23028:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23078:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23089:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23074:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23074:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23094:34:20",
                                    "type": "",
                                    "value": "ERC1155: transfer to the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23067:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23067:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23067:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23149:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23160:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23145:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23145:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23165:7:20",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23138:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23138:35:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23138:35:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23182:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23194:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23205:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23190:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23190:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23182:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22965:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22979:4:20",
                            "type": ""
                          }
                        ],
                        "src": "22814:401:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23394:224:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23411:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23422:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23404:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23404:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23404:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23445:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23456:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23441:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23441:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23461:2:20",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23434:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23434:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23434:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23484:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23495:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23480:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23480:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23500:34:20",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23473:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23473:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23473:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23555:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23566:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23551:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23551:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23571:4:20",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23544:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23544:32:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23544:32:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23585:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23597:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23608:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23593:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23593:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23585:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23371:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23385:4:20",
                            "type": ""
                          }
                        ],
                        "src": "23220:398:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23797:225:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23814:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23825:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23807:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23807:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23807:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23848:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23859:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23844:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23844:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23864:2:20",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23837:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23837:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23837:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23887:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23898:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23883:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23883:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23903:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn from the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23876:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23876:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23876:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23958:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23969:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23954:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23954:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23974:5:20",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23947:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23947:33:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23947:33:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23989:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24001:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24012:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23997:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23997:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23989:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23774:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23788:4:20",
                            "type": ""
                          }
                        ],
                        "src": "23623:399:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24201:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24218:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24229:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24211:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24211:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24211:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24252:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24263:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24248:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24248:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24268:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24241:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24241:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24241:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24291:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24302:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24287:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24287:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24307:34:20",
                                    "type": "",
                                    "value": "ERC1155: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24280:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24280:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24280:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24362:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24373:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24358:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24358:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24378:12:20",
                                    "type": "",
                                    "value": "r transfer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24351:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24351:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24351:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24400:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24412:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24423:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24408:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24408:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24400:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24178:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24192:4:20",
                            "type": ""
                          }
                        ],
                        "src": "24027:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24612:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24629:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24640:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24622:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24622:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24622:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24663:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24674:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24659:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24659:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24679:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24652:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24652:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24652:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24702:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24713:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24698:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24698:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24718:34:20",
                                    "type": "",
                                    "value": "ERC1155: burn amount exceeds tot"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24691:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24691:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24691:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24773:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24784:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24769:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24769:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24789:10:20",
                                    "type": "",
                                    "value": "alSupply"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24762:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24762:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24762:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24809:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24821:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24832:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24817:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24817:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24809:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24589:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24603:4:20",
                            "type": ""
                          }
                        ],
                        "src": "24438:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25021:180:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25038:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25049:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25031:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25031:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25031:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25072:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25083:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25068:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25068:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25088:2:20",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25061:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25061:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25061:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25111:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25122:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25107:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25107:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25127:32:20",
                                    "type": "",
                                    "value": "Transfer pass was already used"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25100:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25100:60:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25100:60:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25169:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25181:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25192:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25177:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25177:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25169:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24998:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25012:4:20",
                            "type": ""
                          }
                        ],
                        "src": "24847:354:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25380:177:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25397:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25408:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25390:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25390:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25390:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25431:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25442:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25427:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25427:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25447:2:20",
                                    "type": "",
                                    "value": "27"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25420:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25420:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25420:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25470:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25481:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25466:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25466:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25486:29:20",
                                    "type": "",
                                    "value": "ERC2981: Invalid parameters"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25459:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25459:57:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25459:57:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25525:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25537:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25548:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25533:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25533:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25525:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d20a09dd8b4080dbbc254e38d9f607ef83a2c7a38b671ae8f8f162ffe46e2084__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25357:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25371:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25206:351:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25736:232:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25753:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25764:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25746:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25746:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25746:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25787:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25798:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25783:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25783:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25803:2:20",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25776:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25776:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25776:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25826:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25837:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25822:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25822:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25842:34:20",
                                    "type": "",
                                    "value": "ERC2981: royalty fee will exceed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25815:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25815:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25815:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25897:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25908:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25893:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25893:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25913:12:20",
                                    "type": "",
                                    "value": " salePrice"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25886:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25886:40:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25886:40:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25935:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25947:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25958:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25943:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25943:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25935:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25713:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25727:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25562:406:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26147:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26164:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26175:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26157:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26157:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26157:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26198:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26209:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26194:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26194:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26214:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26187:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26187:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26187:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26237:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26248:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26233:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26233:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26253:34:20",
                                    "type": "",
                                    "value": "ERC1155: setting approval status"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26226:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26226:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26226:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26308:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26319:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26304:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26304:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26324:11:20",
                                    "type": "",
                                    "value": " for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26297:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26297:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26297:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26345:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26357:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26368:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26353:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26353:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26345:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26124:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26138:4:20",
                            "type": ""
                          }
                        ],
                        "src": "25973:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26557:231:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26574:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26585:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26567:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26567:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26567:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26608:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26619:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26604:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26604:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26624:2:20",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26597:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26597:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26597:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26647:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26658:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26643:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26643:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26663:34:20",
                                    "type": "",
                                    "value": "ERC1155: accounts and ids length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26636:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26636:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26636:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26718:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26729:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26714:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26714:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26734:11:20",
                                    "type": "",
                                    "value": " mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26707:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26707:39:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26707:39:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26755:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26767:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26778:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26763:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26763:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26755:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26534:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26548:4:20",
                            "type": ""
                          }
                        ],
                        "src": "26383:405:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26967:230:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26984:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26995:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26977:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26977:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26977:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27018:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27029:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27014:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27014:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27034:2:20",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27007:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27007:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27007:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27057:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27068:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27053:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27053:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27073:34:20",
                                    "type": "",
                                    "value": "ERC1155: ids and amounts length "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27046:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27046:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27046:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27128:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27139:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27124:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27124:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27144:10:20",
                                    "type": "",
                                    "value": "mismatch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27117:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27117:38:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27117:38:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27164:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27176:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27187:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27172:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27172:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27164:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26944:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26958:4:20",
                            "type": ""
                          }
                        ],
                        "src": "26793:404:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27376:223:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27393:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27404:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27386:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27386:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27386:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27427:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27438:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27423:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27423:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27443:2:20",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27416:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27416:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27416:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27466:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27477:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27462:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27462:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27482:34:20",
                                    "type": "",
                                    "value": "ERC1155: mint to the zero addres"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27455:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27455:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27455:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27537:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27548:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27533:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27533:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27553:3:20",
                                    "type": "",
                                    "value": "s"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27526:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27526:31:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27526:31:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27566:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27578:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27589:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27574:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27574:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27566:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27353:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27367:4:20",
                            "type": ""
                          }
                        ],
                        "src": "27202:397:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27778:175:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27795:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27806:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27788:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27788:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27788:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27829:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27840:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27825:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27825:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27845:2:20",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27818:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27818:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27818:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27868:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27879:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27864:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27864:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27884:27:20",
                                    "type": "",
                                    "value": "ERC2981: invalid receiver"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27857:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27857:55:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27857:55:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27921:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27933:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27944:2:20",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27929:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27929:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27921:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27755:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27769:4:20",
                            "type": ""
                          }
                        ],
                        "src": "27604:349:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28132:237:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28149:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28160:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28142:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28142:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28142:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28183:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28194:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28179:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28179:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28199:2:20",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28172:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28172:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28172:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28222:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28233:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28218:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28218:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28238:34:20",
                                    "type": "",
                                    "value": "AccessControl: can only renounce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28211:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28211:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28211:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28293:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28304:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28289:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28289:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28309:17:20",
                                    "type": "",
                                    "value": " roles for self"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28282:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28282:45:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28282:45:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28336:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28348:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28359:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28344:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28344:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28336:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28109:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28123:4:20",
                            "type": ""
                          }
                        ],
                        "src": "27958:411:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28548:229:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28565:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28576:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28558:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28558:21:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28558:21:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28599:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28610:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28595:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28595:18:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28615:2:20",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28588:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28588:30:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28588:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28638:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28649:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28634:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28634:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28654:34:20",
                                    "type": "",
                                    "value": "Only the transferrer sign transf"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28627:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28627:62:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28627:62:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28709:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28720:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28705:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28705:18:20"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28725:9:20",
                                    "type": "",
                                    "value": "er pass"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28698:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28698:37:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28698:37:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28744:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28756:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28767:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28752:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28752:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28744:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28525:9:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28539:4:20",
                            "type": ""
                          }
                        ],
                        "src": "28374:403:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28883:76:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28893:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28905:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28916:2:20",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28901:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28901:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28893:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28935:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "28946:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28928:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28928:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28928:25:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28852:9:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "28863:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28874:4:20",
                            "type": ""
                          }
                        ],
                        "src": "28782:177:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29149:255:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29159:27:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29171:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29182:3:20",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29167:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29167:19:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29159:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29202:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "29213:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29195:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29195:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29195:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29240:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29251:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29236:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29236:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29260:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29268:42:20",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29256:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29256:55:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29229:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29229:83:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29229:83:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29332:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29343:2:20",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29328:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29328:18:20"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "29348:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29321:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29321:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29321:34:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29375:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29386:2:20",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29371:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29371:18:20"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "29391:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29364:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29364:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29364:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29094:9:20",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "29105:6:20",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "29113:6:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29121:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29129:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29140:4:20",
                            "type": ""
                          }
                        ],
                        "src": "28964:440:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29538:119:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29548:26:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29560:9:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29571:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29556:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29556:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29548:4:20"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29590:9:20"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "29601:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29583:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29583:25:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29583:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29628:9:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29639:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29624:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29624:18:20"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29644:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29617:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29617:34:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29617:34:20"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29499:9:20",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29510:6:20",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29518:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29529:4:20",
                            "type": ""
                          }
                        ],
                        "src": "29409:248:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29731:114:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29775:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "29777:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29777:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29777:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "29747:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29755:18:20",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29744:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29744:30:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29741:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29806:33:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29822:1:20",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "29825:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29818:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29818:14:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29834:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29814:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29814:25:20"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "29806:4:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "29711:6:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "29722:4:20",
                            "type": ""
                          }
                        ],
                        "src": "29662:183:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29898:80:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29925:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "29927:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29927:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29927:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29914:1:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "29921:1:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "29917:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29917:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29911:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29911:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "29908:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29956:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29967:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29970:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29963:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29963:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "29956:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "29881:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "29884:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "29890:3:20",
                            "type": ""
                          }
                        ],
                        "src": "29850:128:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30029:228:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30060:168:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "30081:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30084:77:20",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30074:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30074:88:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30074:88:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30182:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30185:4:20",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30175:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30175:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30175:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "30210:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30213:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30203:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30203:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30203:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "30049:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30042:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30042:9:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30039:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30237:14:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "30246:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "30249:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "30242:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30242:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "30237:1:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "30014:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "30017:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "30023:1:20",
                            "type": ""
                          }
                        ],
                        "src": "29983:274:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30314:116:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30373:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "30375:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30375:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30375:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "30345:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "30338:6:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30338:9:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "30331:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30331:17:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "30353:1:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "30364:1:20",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "30360:3:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30360:6:20"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "30368:1:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "30356:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30356:14:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30350:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30350:21:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "30327:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30327:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30324:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30404:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "30419:1:20"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "30422:1:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "30415:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30415:9:20"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "30404:7:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "30293:1:20",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "30296:1:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "30302:7:20",
                            "type": ""
                          }
                        ],
                        "src": "30262:168:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30488:205:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30498:10:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "30507:1:20",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "30502:1:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30567:63:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "30592:3:20"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "30597:1:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30588:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30588:11:20"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30611:3:20"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30616:1:20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "30607:3:20"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30607:11:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "30601:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30601:18:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30581:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30581:39:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30581:39:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "30528:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30531:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30525:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30525:13:20"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "30539:19:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "30541:15:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "30550:1:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30553:2:20",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30546:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30546:10:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "30541:1:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "30521:3:20",
                                "statements": []
                              },
                              "src": "30517:113:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30656:31:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "30669:3:20"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "30674:6:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30665:3:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30665:16:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30683:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30658:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30658:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30658:27:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "30645:1:20"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30648:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30642:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30642:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30639:2:20"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "30466:3:20",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "30471:3:20",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30476:6:20",
                            "type": ""
                          }
                        ],
                        "src": "30435:258:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30745:89:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30772:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "30774:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30774:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30774:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30765:5:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30758:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30758:13:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30755:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30803:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30814:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30825:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "30821:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30821:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30810:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30810:18:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "30803:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "30727:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "30737:3:20",
                            "type": ""
                          }
                        ],
                        "src": "30698:136:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30894:382:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30904:22:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30918:1:20",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "30921:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "30914:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30914:12:20"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "30904:6:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30935:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "30965:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30971:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "30961:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30961:12:20"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "30939:18:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31012:31:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "31014:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "31028:6:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31036:4:20",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "31024:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31024:17:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "31014:6:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "30992:18:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30985:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30985:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "30982:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31102:168:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31123:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31126:77:20",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31116:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31116:88:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31116:88:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31224:1:20",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31227:4:20",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31217:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31217:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31217:15:20"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31252:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31255:4:20",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31245:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31245:15:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31245:15:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "31058:18:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "31081:6:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31089:2:20",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31078:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31078:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "31055:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31055:38:20"
                              },
                              "nodeType": "YulIf",
                              "src": "31052:2:20"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "30874:4:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30883:6:20",
                            "type": ""
                          }
                        ],
                        "src": "30839:437:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31328:202:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31338:58:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31360:6:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "31376:4:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31382:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31372:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31372:13:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31391:2:20",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "31387:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31387:7:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31368:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31368:27:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31356:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31356:40:20"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "31342:10:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31471:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "31473:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31473:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31473:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31414:10:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31426:18:20",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31411:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31411:34:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31450:10:20"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31462:6:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31447:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31447:22:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "31408:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31408:62:20"
                              },
                              "nodeType": "YulIf",
                              "src": "31405:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31509:2:20",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31513:10:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31502:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31502:22:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31502:22:20"
                            }
                          ]
                        },
                        "name": "finalize_allocation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "31310:6:20",
                            "type": ""
                          },
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "31318:4:20",
                            "type": ""
                          }
                        ],
                        "src": "31281:249:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31582:88:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31613:22:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "31615:16:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31615:18:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31615:18:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31598:5:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31609:1:20",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "31605:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31605:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "31595:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31595:17:20"
                              },
                              "nodeType": "YulIf",
                              "src": "31592:2:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31644:20:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31655:5:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31662:1:20",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31651:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31651:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "31644:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31564:5:20",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "31574:3:20",
                            "type": ""
                          }
                        ],
                        "src": "31535:135:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31707:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31724:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31727:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31717:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31717:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31717:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31821:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31824:4:20",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31814:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31814:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31814:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31845:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31848:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "31838:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31838:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31838:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "31675:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31896:152:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31913:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31916:77:20",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31906:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31906:88:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31906:88:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32010:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32013:4:20",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32003:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32003:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32003:15:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32034:1:20",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32037:4:20",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "32027:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32027:15:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32027:15:20"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "31864:184:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32096:142:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32141:91:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "32170:3:20"
                                        },
                                        {
                                          "name": "sig",
                                          "nodeType": "YulIdentifier",
                                          "src": "32175:3:20"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32180:1:20",
                                          "type": "",
                                          "value": "4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "returndatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "32155:14:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32155:27:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32155:27:20"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "32195:27:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32206:3:20",
                                          "type": "",
                                          "value": "224"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "sig",
                                              "nodeType": "YulIdentifier",
                                              "src": "32217:3:20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "32211:5:20"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "32211:10:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32202:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32202:20:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "sig",
                                        "nodeType": "YulIdentifier",
                                        "src": "32195:3:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "32112:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32112:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32130:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32109:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32109:23:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32106:2:20"
                            }
                          ]
                        },
                        "name": "return_data_selector",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "sig",
                            "nodeType": "YulTypedName",
                            "src": "32088:3:20",
                            "type": ""
                          }
                        ],
                        "src": "32053:185:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32290:624:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32330:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "32332:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "32306:14:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32306:16:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32324:4:20",
                                    "type": "",
                                    "value": "0x44"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32303:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32303:26:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32300:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32348:21:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32366:2:20",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32360:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32360:9:20"
                              },
                              "variables": [
                                {
                                  "name": "data",
                                  "nodeType": "YulTypedName",
                                  "src": "32352:4:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32378:16:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32392:1:20",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "32388:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32388:6:20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "32382:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "32418:4:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32424:1:20",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "returndatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "32431:14:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32431:16:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32449:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32427:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32427:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "32403:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32403:50:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32403:50:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32462:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "32482:4:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32476:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32476:11:20"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "32466:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32496:26:20",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "32506:14:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32506:16:20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "32500:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32531:28:20",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "32541:18:20",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "32535:2:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32617:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "32619:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "32577:6:20"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "32585:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32574:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32574:14:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "32597:6:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32605:4:20",
                                            "type": "",
                                            "value": "0x24"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32593:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32593:17:20"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "32612:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32590:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32590:25:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "32571:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32571:45:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32568:2:20"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32635:28:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "32650:4:20"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "32656:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32646:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32646:17:20"
                              },
                              "variables": [
                                {
                                  "name": "msg",
                                  "nodeType": "YulTypedName",
                                  "src": "32639:3:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32672:24:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msg",
                                    "nodeType": "YulIdentifier",
                                    "src": "32692:3:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32686:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32686:10:20"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "32676:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32723:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "32725:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "32711:6:20"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "32719:2:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32708:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32708:14:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32705:2:20"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32814:9:20",
                                "statements": [
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "32816:5:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "msg",
                                            "nodeType": "YulIdentifier",
                                            "src": "32755:3:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "32760:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32751:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32751:16:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32769:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32747:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32747:27:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "32784:4:20"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "32790:14:20"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32790:16:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32780:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32780:27:20"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32809:2:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32776:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32776:36:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32744:2:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32744:69:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32741:2:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "32852:4:20"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "32866:6:20"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "32874:6:20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32862:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32862:19:20"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32883:4:20",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32858:3:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32858:30:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "finalize_allocation",
                                  "nodeType": "YulIdentifier",
                                  "src": "32832:19:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32832:57:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32832:57:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32898:10:20",
                              "value": {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "32905:3:20"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "32898:3:20"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "try_decode_error_message",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "32282:3:20",
                            "type": ""
                          }
                        ],
                        "src": "32243:671:20"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32963:133:20",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33074:16:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33083:1:20",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33086:1:20",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33076:6:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33076:12:20"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33076:12:20"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "32986:5:20"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "32997:5:20"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33004:66:20",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "32993:3:20"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32993:78:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "32983:2:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32983:89:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32976:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32976:97:20"
                              },
                              "nodeType": "YulIf",
                              "src": "32973:2:20"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "32952:5:20",
                            "type": ""
                          }
                        ],
                        "src": "32919:177:20"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_address_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_uint96(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_uint96(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_uint96(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_address_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_address(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_uint256t_addresst_uint256t_uint256t_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        let offset_1 := calldataload(add(headStart, 192))\n        if gt(offset_1, _1) { revert(value6, value6) }\n        value6 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint96(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_uint96(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\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        end := pos\n    }\n    function abi_encode_bytes(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_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, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_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, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\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), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes(value4, add(headStart, 160))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\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        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_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_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_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__to_t_bytes32_t_uint256_t_address_t_uint256_t_uint256_t_uint256_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\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 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_bytes(value0, add(headStart, 32))\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_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370__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), \"ERC1155: caller is not token own\")\n        mstore(add(headStart, 96), \"er nor approved\")\n        tail := add(headStart, 128)\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_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__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), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pausable: not paused\")\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_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__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), \"ERC1155: burn amount exceeds bal\")\n        mstore(add(headStart, 96), \"ance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n        mstore(add(headStart, 96), \"alid owner\")\n        tail := add(headStart, 128)\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_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3__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), \"Transfer pass is expired\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__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), \"Pausable: paused\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__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), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\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_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC1155: burn from the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4__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), \"ERC1155: burn amount exceeds tot\")\n        mstore(add(headStart, 96), \"alSupply\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Transfer pass was already used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d20a09dd8b4080dbbc254e38d9f607ef83a2c7a38b671ae8f8f162ffe46e2084__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"ERC2981: Invalid parameters\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC2981: royalty fee will exceed\")\n        mstore(add(headStart, 96), \" salePrice\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__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), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__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), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__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), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__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), \"ERC1155: mint to the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff__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), \"ERC2981: invalid receiver\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__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), \"AccessControl: can only renounce\")\n        mstore(add(headStart, 96), \" roles for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"Only the transferrer sign transf\")\n        mstore(add(headStart, 96), \"er pass\")\n        tail := add(headStart, 128)\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_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__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, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_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 array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\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 checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(r, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(r, 0x24)\n        }\n        r := div(x, y)\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 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 decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\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, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(sig, sig, 4)\n            sig := shr(224, mload(sig))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n}",
                  "id": 20,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "3300": [
                  {
                    "length": 32,
                    "start": 10612
                  }
                ],
                "3302": [
                  {
                    "length": 32,
                    "start": 10570
                  }
                ],
                "3304": [
                  {
                    "length": 32,
                    "start": 10528
                  }
                ],
                "3306": [
                  {
                    "length": 32,
                    "start": 10695
                  }
                ],
                "3308": [
                  {
                    "length": 32,
                    "start": 10732
                  }
                ],
                "3310": [
                  {
                    "length": 32,
                    "start": 10653
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102915760003560e01c80636b20c45411610160578063aa1b103f116100d8578063e63ab1e91161008c578063e985e9c511610071578063e985e9c514610618578063f242432a14610654578063f5298aca1461066757600080fd5b8063e63ab1e9146105e9578063e8a3d4851461061057600080fd5b8063cb9fcffb116100bd578063cb9fcffb14610588578063d5391393146105af578063d547741f146105d657600080fd5b8063aa1b103f14610560578063bd85b0391461056857600080fd5b80638a616bc01161012f578063938e3d7b11610114578063938e3d7b14610532578063a217fddf14610545578063a22cb4651461054d57600080fd5b80638a616bc0146104e657806391d14854146104f957600080fd5b80636b20c45414610491578063731133e9146104a45780637f345710146104b75780638456cb59146104de57600080fd5b80632a55205a1161020e5780634e1273f4116101c25780635944c753116101a75780635944c7531461044c5780635c975abb1461045f57806363ac5d971461046a57600080fd5b80634e1273f41461040a5780634f558e791461042a57600080fd5b80632f2ff15d116101f35780632f2ff15d146103dc57806336568abe146103ef5780633f4ba83a1461040257600080fd5b80632a55205a146103975780632eb2c2d6146103c957600080fd5b80630e89341c116102655780631f7fdffa1161024a5780631f7fdffa1461034e57806323a45c6114610361578063248a9ca31461037457600080fd5b80630e89341c14610307578063121df2471461032757600080fd5b8062fdd58e1461029657806301ffc9a7146102bc57806302fe5305146102df57806304634d8d146102f4575b600080fd5b6102a96102a4366004613685565b61067a565b6040519081526020015b60405180910390f35b6102cf6102ca366004613861565b610723565b60405190151581526020016102b3565b6102f26102ed366004613931565b610734565b005b6102f2610302366004613733565b61076b565b61031a610315366004613827565b6107a4565b6040516102b39190613b91565b6102a97f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a81565b6102f261035c3660046135b6565b610846565b6102f261036f366004613899565b610883565b6102a9610382366004613827565b60009081526005602052604090206001015490565b6103aa6103a53660046139a7565b610c07565b604080516001600160a01b0390931683526020830191909152016102b3565b6102f26103d736600461343c565b610cc4565b6102f26103ea36600461383f565b610d51565b6102f26103fd36600461383f565b610d76565b6102f2610dfe565b61041d61041836600461375c565b610e33565b6040516102b39190613b50565b6102cf610438366004613827565b600090815260076020526040902054151590565b6102f261045a36600461396c565b610fa9565b60065460ff166102cf565b6102a97f9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d781565b6102f261049f366004613545565b610fe4565b6102f26104b23660046136e0565b61106f565b6102a97f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b6102f26110a5565b6102f26104f4366004613827565b6110d7565b6102cf61050736600461383f565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102f2610540366004613931565b611113565b6102a9600081565b6102f261055b36600461364b565b611150565b6102f261115b565b6102a9610576366004613827565b60009081526007602052604090205490565b6102a97feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e81565b6102a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102f26105e436600461383f565b61118f565b6102a97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61031a6111b4565b6102cf61062636600461340a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6102f26106623660046134e2565b611246565b6102f26106753660046136ae565b6112d3565b60006001600160a01b0383166106fd5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b600061072e8261158c565b92915050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c61075e816115ca565b610767826115d4565b5050565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e610795816115ca565b61079f83836115e7565b505050565b60008181526009602052604090208054606091906107c190613c62565b80601f01602080910402602001604051908101604052809291908181526020018280546107ed90613c62565b801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610870816115ca565b61087c858585856116ee565b5050505050565b8051602080830191909120604080517f8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c9381019390935282018890526001600160a01b03871660608301526080820186905260a0820185905260c0820184905260e082015260009061090e9061010001604051602081830303815290604052805190602001206118df565b9050600061091c828a611948565b6001600160a01b03811660009081527fddd3a4ae259d4dcf140c065fe48b07ab03bf2f7c8d9502713ea0b2e1a2c7cb02602052604090205490915060ff166109cc5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865207472616e73666572726572207369676e207472616e736660448201527f657220706173730000000000000000000000000000000000000000000000000060648201526084016106f4565b834210610a1b5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220706173732069732065787069726564000000000000000060448201526064016106f4565b6000888152600a602052604090205460ff1615610a7a5760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657220706173732077617320616c72656164792075736564000060448201526064016106f4565b60008681526009602052604081208054610a9390613c62565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90613c62565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b50505050509050805160001415610b765760008781526009602090815260409091208551610b3c92870190613256565b50867f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b85604051610b6d9190613b91565b60405180910390a25b604080518a81526001600160a01b038a166020820152908101889052606081018790527fe202102ce42c14d1f73e60059def856f1b1bc2a387f48d1c61980befd84fe7029060800160405180910390a16000898152600a60209081526040808320805460ff1916600117905580519182019052908152610bfb90899089908990611964565b50505050505050505050565b60008281526004602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610c865750604080518082019091526003546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610caa906bffffffffffffffffffffffff1687613c00565b610cb49190613be0565b91519350909150505b9250929050565b6001600160a01b038516331480610ce05750610ce08533610626565b610d445760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61087c8585858585611a87565b600082815260056020526040902060010154610d6c816115ca565b61079f8383611d0f565b6001600160a01b0381163314610df45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016106f4565b6107678282611db1565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e28816115ca565b610e30611e34565b50565b60608151835114610eac5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016106f4565b6000835167ffffffffffffffff811115610ed657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610eff578160200160208202803683370190505b50905060005b8451811015610fa157610f66858281518110610f3157634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610f5957634e487b7160e01b600052603260045260246000fd5b602002602001015161067a565b828281518110610f8657634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610f9a81613cca565b9050610f05565b509392505050565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e610fd3816115ca565b610fde848484611e86565b50505050565b6001600160a01b03831633148061100057506110008333610626565b6110645760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61079f838383611f9e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611099816115ca565b61087c85858585611964565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110cf816115ca565b610e3061220f565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e611101816115ca565b50600090815260046020526040812055565b7f17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a61113d816115ca565b815161079f906008906020850190613256565b61076733838361224c565b7feb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e611185816115ca565b610e306000600355565b6000828152600560205260409020600101546111aa816115ca565b61079f8383611db1565b6060600880546111c390613c62565b80601f01602080910402602001604051908101604052809291908181526020018280546111ef90613c62565b801561123c5780601f106112115761010080835404028352916020019161123c565b820191906000526020600020905b81548152906001019060200180831161121f57829003601f168201915b5050505050905090565b6001600160a01b03851633148061126257506112628533610626565b6112c65760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61087c8585858585612341565b6001600160a01b0383163314806112ef57506112ef8333610626565b6113535760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016106f4565b61079f8383836124fa565b6060600061136d836002613c00565b611378906002613bc8565b67ffffffffffffffff81111561139e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156113c8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061140d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061146657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061148a846002613c00565b611495906001613bc8565b90505b6001811115611536577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106114e457634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061150857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361152f81613c4b565b9050611498565b5083156115855760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106f4565b9392505050565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061072e575061072e8261268a565b610e3081336126c8565b8051610767906002906020840190613256565b6127106bffffffffffffffffffffffff8216111561165a5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016106f4565b6001600160a01b0382166116b05760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016106f4565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600355565b6001600160a01b03841661174e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f4565b81518351146117b05760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b336117c081600087878787612748565b60005b8451811015611877578381815181106117ec57634e487b7160e01b600052603260045260246000fd5b602002602001015160008087848151811061181757634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461185f9190613bc8565b9091555081905061186f81613cca565b9150506117c3565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118c8929190613b63565b60405180910390a461087c8160008787878761275e565b600061072e6118ec612913565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006119578585612a3d565b91509150610fa181612aaa565b6001600160a01b0384166119c45760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f4565b3360006119d085612cab565b905060006119dd85612cab565b90506119ee83600089858589612748565b6000868152602081815260408083206001600160a01b038b16845290915281208054879290611a1e908490613bc8565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611a7e83600089898989612d04565b50505050505050565b8151835114611ae95760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b6001600160a01b038416611b4d5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b33611b5c818787878787612748565b60005b8451811015611ca1576000858281518110611b8a57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110611bb657634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015611c495760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f4565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611c86908490613bc8565b9250508190555050505080611c9a90613cca565b9050611b5f565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611cf1929190613b63565b60405180910390a4611d0781878787878761275e565b505050505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166107675760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d6d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16156107675760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611e3c612e0f565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6127106bffffffffffffffffffffffff82161115611ef95760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016106f4565b6001600160a01b038216611f4f5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016106f4565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff92831660208083019182526000968752600490529190942093519051909116600160a01b029116179055565b6001600160a01b0383166120005760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b80518251146120625760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106f4565b600033905061208581856000868660405180602001604052806000815250612748565b60005b83518110156121a25760008482815181106120b357634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008483815181106120df57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038c16835290935291909120549091508181101561216b5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016106f4565b6000928352602083815260408085206001600160a01b038b168652909152909220910390558061219a81613cca565b915050612088565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516121f3929190613b63565b60405180910390a4604080516020810190915260009052610fde565b612217612e63565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e693390565b816001600160a01b0316836001600160a01b031614156122d45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016106f4565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166123a55760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b3360006123b185612cab565b905060006123be85612cab565b90506123ce838989858589612748565b6000868152602081815260408083206001600160a01b038c168452909152902054858110156124525760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f4565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061248f908490613bc8565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46124ef848a8a8a8a8a612d04565b505050505050505050565b6001600160a01b03831661255c5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b33600061256884612cab565b9050600061257584612cab565b905061259583876000858560405180602001604052806000815250612748565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156126125760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016106f4565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052611a7e565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061072e575061072e82612eb6565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff1661076757612706816001600160a01b0316601461135e565b61271183602061135e565b604051602001612722929190613a2e565b60408051601f198184030181529082905262461bcd60e51b82526106f491600401613b91565b612750612e63565b611d07868686868686612f51565b6001600160a01b0384163b15611d075760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906127a29089908990889088908890600401613aaf565b602060405180830381600087803b1580156127bc57600080fd5b505af19250505080156127ec575060408051601f3d908101601f191682019092526127e99181019061387d565b60015b6128a2576127f8613d11565b806308c379a01415612832575061280d613d28565b806128185750612834565b8060405162461bcd60e51b81526004016106f49190613b91565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016106f4565b6001600160e01b0319811663bc197c8160e01b14611a7e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016106f4565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561296c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561299657507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b90565b600080825160411415612a745760208301516040840151606085015160001a612a6887828585613117565b94509450505050610cbd565b825160401415612a9e5760208301516040840151612a93868383613204565b935093505050610cbd565b50600090506002610cbd565b6000816004811115612acc57634e487b7160e01b600052602160045260246000fd5b1415612ad55750565b6001816004811115612af757634e487b7160e01b600052602160045260246000fd5b1415612b455760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106f4565b6002816004811115612b6757634e487b7160e01b600052602160045260246000fd5b1415612bb55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106f4565b6003816004811115612bd757634e487b7160e01b600052602160045260246000fd5b1415612c305760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106f4565b6004816004811115612c5257634e487b7160e01b600052602160045260246000fd5b1415610e305760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106f4565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612cf357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b15611d075760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612d489089908990889088908890600401613b0d565b602060405180830381600087803b158015612d6257600080fd5b505af1925050508015612d92575060408051601f3d908101601f19168201909252612d8f9181019061387d565b60015b612d9e576127f8613d11565b6001600160e01b0319811663f23a6e6160e01b14611a7e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b60648201526084016106f4565b60065460ff16612e615760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016106f4565b565b60065460ff1615612e615760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106f4565b60006001600160e01b031982167fd9b67a26000000000000000000000000000000000000000000000000000000001480612f1957506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061072e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461072e565b6001600160a01b038516612ff45760005b8351811015612ff257828181518110612f8b57634e487b7160e01b600052603260045260246000fd5b602002602001015160076000868481518110612fb757634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612fdc9190613bc8565b90915550612feb905081613cca565b9050612f62565b505b6001600160a01b038416611d075760005b8351811015611a7e57600084828151811061303057634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061305c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600060076000848152602001908152602001600020549050818110156130f45760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c7900000000000000000000000000000000000000000000000060648201526084016106f4565b6000928352600760205260409092209103905561311081613cca565b9050613005565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561314e57506000905060036131fb565b8460ff16601b1415801561316657508460ff16601c14155b1561317757506000905060046131fb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131f4576000600192509250506131fb565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161323a60ff86901c601b613bc8565b905061324887828885613117565b935093505050935093915050565b82805461326290613c62565b90600052602060002090601f01602090048101928261328457600085556132ca565b82601f1061329d57805160ff19168380011785556132ca565b828001600101855582156132ca579182015b828111156132ca5782518255916020019190600101906132af565b506132d69291506132da565b5090565b5b808211156132d657600081556001016132db565b80356001600160a01b038116811461330657600080fd5b919050565b600082601f83011261331b578081fd5b8135602061332882613ba4565b6040516133358282613c9d565b8381528281019150858301600585901b87018401881015613354578586fd5b855b8581101561337257813584529284019290840190600101613356565b5090979650505050505050565b600082601f83011261338f578081fd5b813567ffffffffffffffff8111156133a9576133a9613cfb565b6040516133c0601f8301601f191660200182613c9d565b8181528460208386010111156133d4578283fd5b816020850160208301379081016020019190915292915050565b80356bffffffffffffffffffffffff8116811461330657600080fd5b6000806040838503121561341c578182fd5b613425836132ef565b9150613433602084016132ef565b90509250929050565b600080600080600060a08688031215613453578081fd5b61345c866132ef565b945061346a602087016132ef565b9350604086013567ffffffffffffffff80821115613486578283fd5b61349289838a0161330b565b945060608801359150808211156134a7578283fd5b6134b389838a0161330b565b935060808801359150808211156134c8578283fd5b506134d58882890161337f565b9150509295509295909350565b600080600080600060a086880312156134f9578081fd5b613502866132ef565b9450613510602087016132ef565b93506040860135925060608601359150608086013567ffffffffffffffff811115613539578182fd5b6134d58882890161337f565b600080600060608486031215613559578283fd5b613562846132ef565b9250602084013567ffffffffffffffff8082111561357e578384fd5b61358a8783880161330b565b9350604086013591508082111561359f578283fd5b506135ac8682870161330b565b9150509250925092565b600080600080608085870312156135cb578384fd5b6135d4856132ef565b9350602085013567ffffffffffffffff808211156135f0578485fd5b6135fc8883890161330b565b94506040870135915080821115613611578384fd5b61361d8883890161330b565b93506060870135915080821115613632578283fd5b5061363f8782880161337f565b91505092959194509250565b6000806040838503121561365d578182fd5b613666836132ef565b91506020830135801515811461367a578182fd5b809150509250929050565b60008060408385031215613697578182fd5b6136a0836132ef565b946020939093013593505050565b6000806000606084860312156136c2578081fd5b6136cb846132ef565b95602085013595506040909401359392505050565b600080600080608085870312156136f5578182fd5b6136fe856132ef565b93506020850135925060408501359150606085013567ffffffffffffffff811115613727578182fd5b61363f8782880161337f565b60008060408385031215613745578182fd5b61374e836132ef565b9150613433602084016133ee565b6000806040838503121561376e578182fd5b823567ffffffffffffffff80821115613785578384fd5b818501915085601f830112613798578384fd5b813560206137a582613ba4565b6040516137b28282613c9d565b8381528281019150858301600585901b870184018b10156137d1578889fd5b8896505b848710156137fa576137e6816132ef565b8352600196909601959183019183016137d5565b5096505086013592505080821115613810578283fd5b5061381d8582860161330b565b9150509250929050565b600060208284031215613838578081fd5b5035919050565b60008060408385031215613851578182fd5b82359150613433602084016132ef565b600060208284031215613872578081fd5b813561158581613db2565b60006020828403121561388e578081fd5b815161158581613db2565b600080600080600080600060e0888a0312156138b3578485fd5b873567ffffffffffffffff808211156138ca578687fd5b6138d68b838c0161337f565b985060208a013597506138eb60408b016132ef565b965060608a0135955060808a0135945060a08a0135935060c08a0135915080821115613915578283fd5b506139228a828b0161337f565b91505092959891949750929550565b600060208284031215613942578081fd5b813567ffffffffffffffff811115613958578182fd5b6139648482850161337f565b949350505050565b600080600060608486031215613980578081fd5b83359250613990602085016132ef565b915061399e604085016133ee565b90509250925092565b600080604083850312156139b9578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b838110156139f7578151875295820195908201906001016139db565b509495945050505050565b60008151808452613a1a816020860160208601613c1f565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613a66816017850160208801613c1f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613aa3816028840160208801613c1f565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a06040830152613adb60a08301866139c8565b8281036060840152613aed81866139c8565b90508281036080840152613b018185613a02565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613b4560a0830184613a02565b979650505050505050565b60208152600061158560208301846139c8565b604081526000613b7660408301856139c8565b8281036020840152613b8881856139c8565b95945050505050565b6020815260006115856020830184613a02565b600067ffffffffffffffff821115613bbe57613bbe613cfb565b5060051b60200190565b60008219821115613bdb57613bdb613ce5565b500190565b600082613bfb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613c1a57613c1a613ce5565b500290565b60005b83811015613c3a578181015183820152602001613c22565b83811115610fde5750506000910152565b600081613c5a57613c5a613ce5565b506000190190565b600181811c90821680613c7657607f821691505b60208210811415613c9757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715613cc357613cc3613cfb565b6040525050565b6000600019821415613cde57613cde613ce5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115612a3a57600481823e5160e01c90565b600060443d1015613d365790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715613d6657505050505090565b8285019150815181811115613d7e5750505050505090565b843d8701016020828501011115613d985750505050505090565b613da760208286010187613c9d565b509095945050505050565b6001600160e01b031981168114610e3057600080fdfea2646970667358221220483440498ef814421fc10deedd8131b657bafcbf4f97cc1b5450183bcb43723f64736f6c63430008040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x291 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B20C454 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xAA1B103F GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xE63AB1E9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x618 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE63AB1E9 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB9FCFFB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xCB9FCFFB EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAA1B103F EQ PUSH2 0x560 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A616BC0 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x938E3D7B GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A616BC0 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B20C454 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0x7F345710 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x5944C753 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5944C753 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0x63AC5D97 EQ PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x1F7FDFFA GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x23A45C61 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x121DF247 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x296 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x2FE5305 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x4634D8D EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CF PUSH2 0x2CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3861 JUMP JUMPDEST PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B3 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x2ED CALLDATASIZE PUSH1 0x4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F2 PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0x3733 JUMP JUMPDEST PUSH2 0x76B JUMP JUMPDEST PUSH2 0x31A PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH2 0x7A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x35B6 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x3899 JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3AA PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x39A7 JUMP JUMPDEST PUSH2 0xC07 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 0x2B3 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x343C JUMP JUMPDEST PUSH2 0xCC4 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0xD51 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x3FD CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0xD76 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0xDFE JUMP JUMPDEST PUSH2 0x41D PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x375C JUMP JUMPDEST PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x3B50 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x396C JUMP JUMPDEST PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x2CF JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x9C0B3A9882E11A6BFB8283B46D1E79513AFB8024EE864CD3A5B3A9050C42A7D7 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x49F CALLDATASIZE PUSH1 0x4 PUSH2 0x3545 JUMP JUMPDEST PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x36E0 JUMP JUMPDEST PUSH2 0x106F JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x4F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x507 CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x5 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 PUSH2 0x2F2 PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x2A9 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x55B CALLDATASIZE PUSH1 0x4 PUSH2 0x364B JUMP JUMPDEST PUSH2 0x1150 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x2A9 PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E DUP2 JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0x118F JUMP JUMPDEST PUSH2 0x2A9 PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A DUP2 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x11B4 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x340A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 PUSH2 0x2F2 PUSH2 0x662 CALLDATASIZE PUSH1 0x4 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x36AE JUMP JUMPDEST PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP3 PUSH2 0x158C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x7804D923F43A17D325D77E781528E0793B2EDD9890AB45FC64EFD7B4B427744C PUSH2 0x75E DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x767 DUP3 PUSH2 0x15D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x795 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x15E7 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH2 0x7C1 SWAP1 PUSH2 0x3C62 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 0x7ED SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x83A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x80F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x83A 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 0x81D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x870 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 PUSH2 0x16EE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH32 0x8A73F441CCFC90803A814E1B8136A6B47F18AEC294550D26966593EE7EF0E03C SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x90E SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x18DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x91C DUP3 DUP11 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xDDD3A4AE259D4DCF140C065FE48B07AB03BF2F7C8D9502713EA0B2E1A2C7CB02 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0x9CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865207472616E73666572726572207369676E207472616E7366 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572207061737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0xA1B 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 0x5472616E73666572207061737320697320657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220706173732077617320616C726561647920757365640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA93 SWAP1 PUSH2 0x3C62 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 0xABF SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB0C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAE1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB0C 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 0xAEF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB76 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP6 MLOAD PUSH2 0xB3C SWAP3 DUP8 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST POP DUP7 PUSH32 0x6BB7FF708619BA0610CBA295A58592E0451DEE2622938C8755667688DAF3529B DUP6 PUSH1 0x40 MLOAD PUSH2 0xB6D SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP11 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH32 0xE202102CE42C14D1F73E60059DEF856F1B1BC2A387F48D1C61980BEFD84FE702 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH2 0xBFB SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x1964 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP2 PUSH2 0xC86 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2710 SWAP1 PUSH2 0xCAA SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0xCB4 SWAP2 SWAP1 PUSH2 0x3BE0 JUMP JUMPDEST SWAP2 MLOAD SWAP4 POP SWAP1 SWAP2 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xCE0 JUMPI POP PUSH2 0xCE0 DUP6 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0xD44 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1A87 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD6C DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xDF4 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 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x767 DUP3 DUP3 PUSH2 0x1DB1 JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0xE28 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x1E34 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xEAC 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 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEFF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xFA1 JUMPI PUSH2 0xF66 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF31 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF59 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x67A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF86 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0xF9A DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0xF05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0xFD3 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xFDE DUP5 DUP5 DUP5 PUSH2 0x1E86 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0x1000 JUMPI POP PUSH2 0x1000 DUP4 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x1064 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 DUP4 PUSH2 0x1F9E JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x1099 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 PUSH2 0x1964 JUMP JUMPDEST PUSH32 0x65D7A28E3265B37A6474929F336521B332C1681B933F6CB9F3376673440D862A PUSH2 0x10CF DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x220F JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x1101 DUP2 PUSH2 0x15CA JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH32 0x17CDF715ECCA7590EB5789987F00C7BCF0E7CB92C30A2788DF2427A8F78F811A PUSH2 0x113D DUP2 PUSH2 0x15CA JUMP JUMPDEST DUP2 MLOAD PUSH2 0x79F SWAP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST PUSH2 0x767 CALLER DUP4 DUP4 PUSH2 0x224C JUMP JUMPDEST PUSH32 0xEB54E1FEEE3AE17ADD098CBF58A47457BF5F7C3A89CEAB263CBDB01B3DA6D98E PUSH2 0x1185 DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xE30 PUSH1 0x0 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x11AA DUP2 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x11C3 SWAP1 PUSH2 0x3C62 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 0x11EF SWAP1 PUSH2 0x3C62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x123C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1211 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x123C 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 0x121F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1262 JUMPI POP PUSH2 0x1262 DUP6 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x12C6 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x87C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0x12EF JUMPI POP PUSH2 0x12EF DUP4 CALLER PUSH2 0x626 JUMP JUMPDEST PUSH2 0x1353 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 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x195C881B9BDC88185C1C1C9BDD9959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH2 0x79F DUP4 DUP4 DUP4 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x136D DUP4 PUSH1 0x2 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0x1378 SWAP1 PUSH1 0x2 PUSH2 0x3BC8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x139E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x13C8 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x140D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1466 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x148A DUP5 PUSH1 0x2 PUSH2 0x3C00 JUMP JUMPDEST PUSH2 0x1495 SWAP1 PUSH1 0x1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1536 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x14E4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1508 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x152F DUP2 PUSH2 0x3C4B JUMP JUMPDEST SWAP1 POP PUSH2 0x1498 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x1585 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 0x6F4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x72E JUMPI POP PUSH2 0x72E DUP3 PUSH2 0x268A JUMP JUMPDEST PUSH2 0xE30 DUP2 CALLER PUSH2 0x26C8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x767 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3256 JUMP JUMPDEST PUSH2 0x2710 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT ISZERO PUSH2 0x165A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20726F79616C7479206665652077696C6C20657863656564 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x2073616C655072696365 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16B0 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 0x455243323938313A20696E76616C696420726563656976657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x174E 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x17B0 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH2 0x17C0 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1877 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x17EC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1817 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x185F SWAP2 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 SWAP1 POP PUSH2 0x186F DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x17C3 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x18C8 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x87C DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x72E PUSH2 0x18EC PUSH2 0x2913 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1957 DUP6 DUP6 PUSH2 0x2A3D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xFA1 DUP2 PUSH2 0x2AAA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19C4 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 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x19D0 DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19DD DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x19EE DUP4 PUSH1 0x0 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x1A1E SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1A7E DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2D04 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1AE9 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1B4D 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH2 0x1B5C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B8A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BB6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x1C49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1C86 SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x1C9A SWAP1 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B5F JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1CF1 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1D07 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x275E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH2 0x767 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 0x1D6D 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 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x767 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 PUSH2 0x1E3C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER 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 LOG1 JUMP JUMPDEST PUSH2 0x2710 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT ISZERO PUSH2 0x1EF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20726F79616C7479206665652077696C6C20657863656564 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x2073616C655072696365 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243323938313A20496E76616C696420706172616D65746572730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SWAP7 DUP8 MSTORE PUSH1 0x4 SWAP1 MSTORE SWAP2 SWAP1 SWAP5 KECCAK256 SWAP4 MLOAD SWAP1 MLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2000 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2062 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 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x2085 DUP2 DUP6 PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x21A2 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20B3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x20DF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x216B 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP7 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH2 0x219A DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2088 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x21F3 SWAP3 SWAP2 SWAP1 PUSH2 0x3B63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2217 PUSH2 0x2E63 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1E69 CALLER SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x22D4 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 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x23A5 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 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x23B1 DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23BE DUP6 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x23CE DUP4 DUP10 DUP10 DUP6 DUP6 DUP10 PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x2452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x248F SWAP1 DUP5 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x24EF DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2D04 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x255C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x2568 DUP5 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2575 DUP5 PUSH2 0x2CAB JUMP JUMPDEST SWAP1 POP PUSH2 0x2595 DUP4 DUP8 PUSH1 0x0 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2748 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x2612 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 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x72E JUMPI POP PUSH2 0x72E DUP3 PUSH2 0x2EB6 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH2 0x767 JUMPI PUSH2 0x2706 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0x135E JUMP JUMPDEST PUSH2 0x2711 DUP4 PUSH1 0x20 PUSH2 0x135E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2722 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x6F4 SWAP2 PUSH1 0x4 ADD PUSH2 0x3B91 JUMP JUMPDEST PUSH2 0x2750 PUSH2 0x2E63 JUMP JUMPDEST PUSH2 0x1D07 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x27A2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x27EC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x27E9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28A2 JUMPI PUSH2 0x27F8 PUSH2 0x3D11 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x2832 JUMPI POP PUSH2 0x280D PUSH2 0x3D28 JUMP JUMPDEST DUP1 PUSH2 0x2818 JUMPI POP PUSH2 0x2834 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0x3B91 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1A7E 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x296C JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x2996 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x2A74 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2A68 DUP8 DUP3 DUP6 DUP6 PUSH2 0x3117 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xCBD JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2A93 DUP7 DUP4 DUP4 PUSH2 0x3204 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xCBD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2ACC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2AD5 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2AF7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2B45 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 0x6F4 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2B67 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2BB5 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 0x6F4 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2BD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2C30 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 0x6F4 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2C52 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0xE30 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 0x6F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2CF3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x2D48 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2D92 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2D8F SWAP2 DUP2 ADD SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2D9E JUMPI PUSH2 0x27F8 PUSH2 0x3D11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1A7E 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 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x2E61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2E61 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 PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2F19 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x72E JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x72E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2FF4 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF2 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2F8B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x7 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2FB7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2FDC SWAP2 SWAP1 PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2FEB SWAP1 POP DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x2F62 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1D07 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1A7E JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3030 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x305C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x30F4 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 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SWAP2 SUB SWAP1 SSTORE PUSH2 0x3110 DUP2 PUSH2 0x3CCA JUMP JUMPDEST SWAP1 POP PUSH2 0x3005 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x314E JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x31FB JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3166 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x3177 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x31FB 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 0x31CB 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 0x31F4 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x31FB JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 PUSH2 0x323A PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3BC8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3248 DUP8 DUP3 DUP9 DUP6 PUSH2 0x3117 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x3262 SWAP1 PUSH2 0x3C62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x3284 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x32CA JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x329D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x32CA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x32CA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x32CA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x32AF JUMP JUMPDEST POP PUSH2 0x32D6 SWAP3 SWAP2 POP PUSH2 0x32DA JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x32D6 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x32DB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x331B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x3328 DUP3 PUSH2 0x3BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3335 DUP3 DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x3354 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x3372 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3356 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x338F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33A9 JUMPI PUSH2 0x33A9 PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33C0 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x33D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x341C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3425 DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3453 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x345C DUP7 PUSH2 0x32EF JUMP JUMPDEST SWAP5 POP PUSH2 0x346A PUSH1 0x20 DUP8 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3486 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3492 DUP10 DUP4 DUP11 ADD PUSH2 0x330B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x34A7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x34B3 DUP10 DUP4 DUP11 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x34C8 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x34D5 DUP9 DUP3 DUP10 ADD PUSH2 0x337F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x34F9 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3502 DUP7 PUSH2 0x32EF JUMP JUMPDEST SWAP5 POP PUSH2 0x3510 PUSH1 0x20 DUP8 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3539 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x34D5 DUP9 DUP3 DUP10 ADD PUSH2 0x337F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3559 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3562 DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x357E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x358A DUP8 DUP4 DUP9 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x359F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x35AC DUP7 DUP3 DUP8 ADD PUSH2 0x330B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x35CB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35D4 DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35F0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x35FC DUP9 DUP4 DUP10 ADD PUSH2 0x330B JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3611 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x361D DUP9 DUP4 DUP10 ADD PUSH2 0x330B JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3632 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x363F DUP8 DUP3 DUP9 ADD PUSH2 0x337F 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 0x365D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3666 DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x367A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3697 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36A0 DUP4 PUSH2 0x32EF 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 0x36C2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x36CB DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x36F5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36FE DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3727 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x363F DUP8 DUP3 DUP9 ADD PUSH2 0x337F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3745 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x374E DUP4 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x376E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3785 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3798 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x37A5 DUP3 PUSH2 0x3BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B2 DUP3 DUP3 PUSH2 0x3C9D JUMP JUMPDEST DUP4 DUP2 MSTORE DUP3 DUP2 ADD SWAP2 POP DUP6 DUP4 ADD PUSH1 0x5 DUP6 SWAP1 SHL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x37D1 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x37FA JUMPI PUSH2 0x37E6 DUP2 PUSH2 0x32EF JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x37D5 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3810 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x381D DUP6 DUP3 DUP7 ADD PUSH2 0x330B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3838 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3851 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3433 PUSH1 0x20 DUP5 ADD PUSH2 0x32EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3872 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1585 DUP2 PUSH2 0x3DB2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1585 DUP2 PUSH2 0x3DB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x38B3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x38CA JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x38D6 DUP12 DUP4 DUP13 ADD PUSH2 0x337F JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x38EB PUSH1 0x40 DUP12 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3915 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3922 DUP11 DUP3 DUP12 ADD PUSH2 0x337F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3942 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3958 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3964 DUP5 DUP3 DUP6 ADD PUSH2 0x337F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3980 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x3990 PUSH1 0x20 DUP6 ADD PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP PUSH2 0x399E PUSH1 0x40 DUP6 ADD PUSH2 0x33EE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39B9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39F7 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x39DB JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3A1A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3C1F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x3A66 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3C1F JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x3AA3 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3C1F JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3ADB PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x39C8 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x3AED DUP2 DUP7 PUSH2 0x39C8 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x3B01 DUP2 DUP6 PUSH2 0x3A02 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3B45 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3A02 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1585 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x39C8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3B76 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x39C8 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3B88 DUP2 DUP6 PUSH2 0x39C8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1585 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A02 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3BBE JUMPI PUSH2 0x3BBE PUSH2 0x3CFB JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3BDB JUMPI PUSH2 0x3BDB PUSH2 0x3CE5 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BFB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C1A JUMPI PUSH2 0x3C1A PUSH2 0x3CE5 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C3A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3C22 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFDE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3C5A JUMPI PUSH2 0x3C5A PUSH2 0x3CE5 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3C76 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x3C97 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 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3CC3 JUMPI PUSH2 0x3CC3 PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x3CDE JUMPI PUSH2 0x3CDE PUSH2 0x3CE5 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x2A3A JUMPI PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x3D36 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x3D66 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D7E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3D98 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x3DA7 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x3C9D JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 CALLVALUE BLOCKHASH 0x49 DUP15 0xF8 EQ TIMESTAMP 0x1F 0xC1 0xD 0xEE 0xDD DUP2 BALANCE 0xB6 JUMPI 0xBA 0xFC 0xBF 0x4F SWAP8 0xCC SHL SLOAD POP XOR EXTCODESIZE 0xCB NUMBER PUSH19 0x3F64736F6C6343000804003300000000000000 ",
              "sourceMap": "588:4771:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227:4;;;;;;:::i;:::-;;:::i;:::-;;;16387:25:20;;;16375:2;16360:18;2185:227:4;;;;;;;;5187:170:19;;;;;;:::i;:::-;;:::i;:::-;;;16214:14:20;;16207:22;16189:41;;16177:2;16162:18;5187:170:19;16144:92:20;2184:97:19;;;;;;:::i;:::-;;:::i;:::-;;2994:149;;;;;;:::i;:::-;;:::i;2061:105::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;777:88::-;;828:37;777:88;;2798:192;;;;;;:::i;:::-;;:::i;3538:1273::-;;;;;;:::i;:::-;;:::i;4391:129:0:-;;;;;;:::i;:::-;4465:7;4491:12;;;:6;:12;;;;;:22;;;;4391:129;1671:432:10;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;15203:55:20;;;15185:74;;15290:2;15275:18;;15268:34;;;;15158:18;1671:432:10;15140:168:20;4065:427:4;;;;;;:::i;:::-;;:::i;4816:145:0:-;;;;;;:::i;:::-;;:::i;5925:214::-;;;;;;:::i;:::-;;:::i;2571:69:19:-;;;:::i;2569:508:4:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;901:120:8:-;;;;;;:::i;:::-;958:4;785:16;;;:12;:16;;;;;;-1:-1:-1;;;901:120:8;3247:171:19;;;;;;:::i;:::-;;:::i;1615:84:3:-;1685:7;;;;1615:84;;1069:72:19;;1112:29;1069:72;;730:348:7;;;;;;:::i;:::-;;:::i;2644:150:19:-;;;;;;:::i;:::-;;:::i;703:70::-;;745:28;703:70;;2502:65;;;:::i;3422:112::-;;;;;;:::i;:::-;;:::i;2895:145:0:-;;;;;;:::i;:::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;;;;2895:145;2378:120:19;;;;;;:::i;:::-;;:::i;2027:49:0:-;;2072:4;2027:49;;3145:153:4;;;;;;:::i;:::-;;:::i;3147:96:19:-;;;:::i;697:111:8:-;;;;;;:::i;:::-;759:7;785:16;;;:12;:16;;;;;;;697:111;1001:64:19;;1040:25;1001:64;;935:62;;973:24;935:62;;5241:147:0;;;;;;:::i;:::-;;:::i;869:62:19:-;;907:24;869:62;;2285:89;;;:::i;3365:166:4:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3487:27:4;;;3464:4;3487:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3365:166;3598:395;;;;;;:::i;:::-;;:::i;408:316:7:-;;;;;;:::i;:::-;;:::i;2185:227:4:-;2271:7;-1:-1:-1;;;;;2298:21:4;;2290:76;;;;-1:-1:-1;;;2290:76:4;;21504:2:20;2290:76:4;;;21486:21:20;21543:2;21523:18;;;21516:30;21582:34;21562:18;;;21555:62;21653:12;21633:18;;;21626:40;21683:19;;2290:76:4;;;;;;;;;-1:-1:-1;2383:9:4;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:4;;;;;;;;;;;;2185:227::o;5187:170:19:-;5297:4;5316:36;5340:11;5316:23;:36::i;:::-;5309:43;5187:170;-1:-1:-1;;5187:170:19:o;2184:97::-;745:28;2505:16:0;2516:4;2505:10;:16::i;:::-;2261:15:19::1;2269:6;2261:7;:15::i;:::-;2184:97:::0;;:::o;2994:149::-;1040:25;2505:16:0;2516:4;2505:10;:16::i;:::-;3096:42:19::1;3115:8;3125:12;3096:18;:42::i;:::-;2994:149:::0;;;:::o;2061:105::-;2152:9;;;;:5;:9;;;;;2145:16;;2124:13;;2152:9;2145:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:105;;;:::o;2798:192::-;973:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2951:34:19::1;2962:2;2966:3;2971:7;2980:4;2951:10;:34::i;:::-;2798:192:::0;;;;;:::o;3538:1273::-;4069:24;;;;;;;;;;3804:299;;;3826:140;3804:299;;;17255:25:20;;;;17296:18;;17289:34;;;-1:-1:-1;;;;;17359:55:20;;17339:18;;;17332:83;17431:18;;;17424:34;;;17474:19;;;17467:35;;;17518:19;;;17511:35;;;17562:19;;;17555:35;3744:14:19;;3761:356;;17227:19:20;;3804:299:19;;;;;;;;;;;;3785:326;;;;;;3761:16;:356::i;:::-;3744:373;;4123:23;4149:32;4163:6;4171:9;4149:13;:32::i;:::-;-1:-1:-1;;;;;3004:29:0;;2981:4;3004:29;;;:12;;:29;:12;:29;;;4123:58:19;;-1:-1:-1;3004:29:0;;4187:94:19;;;;-1:-1:-1;;;4187:94:19;;28576:2:20;4187:94:19;;;28558:21:20;28615:2;28595:18;;;28588:30;28654:34;28634:18;;;28627:62;28725:9;28705:18;;;28698:37;28752:19;;4187:94:19;28548:229:20;4187:94:19;4313:10;4295:15;:28;4287:65;;;;-1:-1:-1;;;4287:65:19;;22318:2:20;4287:65:19;;;22300:21:20;22357:2;22337:18;;;22330:30;22396:26;22376:18;;;22369:54;22440:18;;4287:65:19;22290:174:20;4287:65:19;4367:20;;;;:12;:20;;;;;;;;4366:21;4358:64;;;;-1:-1:-1;;;4358:64:19;;25049:2:20;4358:64:19;;;25031:21:20;25088:2;25068:18;;;25061:30;25127:32;25107:18;;;25100:60;25177:18;;4358:64:19;25021:180:20;4358:64:19;4538:21;4568:9;;;:5;:9;;;;;4538:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4588:8;:15;4607:1;4588:20;4584:87;;;4618:9;;;;:5;:9;;;;;;;;:18;;;;;;;;:::i;:::-;;4661:2;4649:15;4653:6;4649:15;;;;;;:::i;:::-;;;;;;;;4584:87;4682:53;;;29195:25:20;;;-1:-1:-1;;;;;29256:55:20;;29251:2;29236:18;;29229:83;29328:18;;;29321:34;;;29386:2;29371:18;;29364:34;;;4682:53:19;;29182:3:20;29167:19;4682:53:19;;;;;;;4742:20;;;;:12;:20;;;;;;;;:27;;-1:-1:-1;;4742:27:19;4765:4;4742:27;;;4776:30;;;;;;;;;;;;4782:7;;4791:2;;4795:6;;4776:5;:30::i;:::-;3538:1273;;;;;;;;;;:::o;1671:432:10:-;1768:7;1825:27;;;:17;:27;;;;;;;;1796:56;;;;;;;;;-1:-1:-1;;;;;1796:56:10;;;;;-1:-1:-1;;;1796:56:10;;;;;;;;;;;;1768:7;;1863:90;;-1:-1:-1;1913:29:10;;;;;;;;;1923:19;1913:29;-1:-1:-1;;;;;1913:29:10;;;;-1:-1:-1;;;1913:29:10;;;;;;;;1863:90;2001:23;;;;1963:21;;2461:5;;1988:36;;1987:58;1988:36;:10;:36;:::i;:::-;1987:58;;;;:::i;:::-;2064:16;;;-1:-1:-1;1963:82:10;;-1:-1:-1;;1671:432:10;;;;;;:::o;4065:427:4:-;-1:-1:-1;;;;;4290:20:4;;719:10:12;4290:20:4;;:60;;-1:-1:-1;4314:36:4;4331:4;719:10:12;3365:166:4;:::i;4314:36::-;4269:154;;;;-1:-1:-1;;;4269:154:4;;19204:2:20;4269:154:4;;;19186:21:20;19243:2;19223:18;;;19216:30;19282:34;19262:18;;;19255:62;-1:-1:-1;;;19333:18:20;;;19326:45;19388:19;;4269:154:4;19176:237:20;4269:154:4;4433:52;4456:4;4462:2;4466:3;4471:7;4480:4;4433:22;:52::i;4816:145:0:-;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4929:25:::1;4940:4;4946:7;4929:10;:25::i;5925:214::-:0;-1:-1:-1;;;;;6020:23:0;;719:10:12;6020:23:0;6012:83;;;;-1:-1:-1;;;6012:83:0;;28160:2:20;6012:83:0;;;28142:21:20;28199:2;28179:18;;;28172:30;28238:34;28218:18;;;28211:62;28309:17;28289:18;;;28282:45;28344:19;;6012:83:0;28132:237:20;6012:83:0;6106:26;6118:4;6124:7;6106:11;:26::i;2571:69:19:-;907:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2625:10:19::1;:8;:10::i;:::-;2571:69:::0;:::o;2569:508:4:-;2720:16;2779:3;:10;2760:8;:15;:29;2752:83;;;;-1:-1:-1;;;2752:83:4;;26585:2:20;2752:83:4;;;26567:21:20;26624:2;26604:18;;;26597:30;26663:34;26643:18;;;26636:62;26734:11;26714:18;;;26707:39;26763:19;;2752:83:4;26557:231:20;2752:83:4;2846:30;2893:8;:15;2879:30;;;;;;-1:-1:-1;;;2879:30:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2879:30:4;;2846:63;;2925:9;2920:120;2944:8;:15;2940:1;:19;2920:120;;;2999:30;3009:8;3018:1;3009:11;;;;;;-1:-1:-1;;;3009:11:4;;;;;;;;;;;;;;;3022:3;3026:1;3022:6;;;;;;-1:-1:-1;;;3022:6:4;;;;;;;;;;;;;;;2999:9;:30::i;:::-;2980:13;2994:1;2980:16;;;;;;-1:-1:-1;;;2980:16:4;;;;;;;;;;;;;;;;;;:49;2961:3;;;:::i;:::-;;;2920:120;;;-1:-1:-1;3057:13:4;2569:508;-1:-1:-1;;;2569:508:4:o;3247:171:19:-;1040:25;2505:16:0;2516:4;2505:10;:16::i;:::-;3364:49:19::1;3381:7;3390:8;3400:12;3364:16;:49::i;:::-;3247:171:::0;;;;:::o;730:348:7:-;-1:-1:-1;;;;;889:23:7;;719:10:12;889:23:7;;:66;;-1:-1:-1;916:39:7;933:7;719:10:12;3365:166:4;:::i;916:39:7:-;868:160;;;;-1:-1:-1;;;868:160:7;;19204:2:20;868:160:7;;;19186:21:20;19243:2;19223:18;;;19216:30;19282:34;19262:18;;;19255:62;-1:-1:-1;;;19333:18:20;;;19326:45;19388:19;;868:160:7;19176:237:20;868:160:7;1039:32;1050:7;1059:3;1064:6;1039:10;:32::i;2644:150:19:-;973:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2757:32:19::1;2763:7;2772:2;2776:6;2784:4;2757:5;:32::i;2502:65::-:0;907:24;2505:16:0;2516:4;2505:10;:16::i;:::-;2554:8:19::1;:6;:8::i;3422:112::-:0;1040:25;2505:16:0;2516:4;2505:10;:16::i;:::-;-1:-1:-1;4061:26:10;;;;:17;:26;;;;;4054:33;2184:97:19:o;2378:120::-;828:37;2505:16:0;2516:4;2505:10;:16::i;:::-;2472:21:19;;::::1;::::0;:12:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;3145:153:4:-:0;3239:52;719:10:12;3272:8:4;3282;3239:18;:52::i;3147:96:19:-;1040:25;2505:16:0;2516:4;2505:10;:16::i;:::-;3215:23:19::1;3199:19:10::0;;3192:26;3132:93;5241:147:0;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5355:26:::1;5367:4;5373:7;5355:11;:26::i;2285:89:19:-:0;2329:13;2357:12;2350:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:89;:::o;3598:395:4:-;-1:-1:-1;;;;;3798:20:4;;719:10:12;3798:20:4;;:60;;-1:-1:-1;3822:36:4;3839:4;719:10:12;3365:166:4;:::i;3822:36::-;3777:154;;;;-1:-1:-1;;;3777:154:4;;19204:2:20;3777:154:4;;;19186:21:20;19243:2;19223:18;;;19216:30;19282:34;19262:18;;;19255:62;-1:-1:-1;;;19333:18:20;;;19326:45;19388:19;;3777:154:4;19176:237:20;3777:154:4;3941:45;3959:4;3965:2;3969;3973:6;3981:4;3941:17;:45::i;408:316:7:-;-1:-1:-1;;;;;542:23:7;;719:10:12;542:23:7;;:66;;-1:-1:-1;569:39:7;586:7;719:10:12;3365:166:4;:::i;569:39:7:-;521:160;;;;-1:-1:-1;;;521:160:7;;19204:2:20;521:160:7;;;19186:21:20;19243:2;19223:18;;;19216:30;19282:34;19262:18;;;19255:62;-1:-1:-1;;;19333:18:20;;;19326:45;19388:19;;521:160:7;19176:237:20;521:160:7;692:25;698:7;707:2;711:5;692;:25::i;1652:441:13:-;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;1774:25;;;;;;-1:-1:-1;;;1774:25:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:13;;1752:47;;1809:15;:6;1816:1;1809:9;;;;;;-1:-1:-1;;;1809:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1809:15:13;;;;;;;;;1834;:6;1841:1;1834:9;;;;;;-1:-1:-1;;;1834:9:13;;;;;;;;;;;;:15;-1:-1:-1;;;;;1834:15:13;;;;;;;;-1:-1:-1;1864:9:13;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;1930:12;1943:5;1951:3;1943:11;1930:25;;;;;-1:-1:-1;;;1930:25:13;;;;;;;;;;;;1918:6;1925:1;1918:9;;;;;;-1:-1:-1;;;1918:9:13;;;;;;;;;;;;:37;-1:-1:-1;;;;;1918:37:13;;;;;;;;-1:-1:-1;1979:1:13;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:13;;2000:55;;;;-1:-1:-1;;;2000:55:13;;19620:2:20;2000:55:13;;;19602:21:20;;;19639:18;;;19632:30;19698:34;19678:18;;;19671:62;19750:18;;2000:55:13;19592:182:20;2000:55:13;2079:6;1652:441;-1:-1:-1;;;1652:441:13:o;2606:202:0:-;2691:4;-1:-1:-1;;;;;;2714:47:0;;2729:32;2714:47;;:87;;;2765:36;2789:11;2765:23;:36::i;3334:103::-;3400:30;3411:4;719:10:12;3400::0;:30::i;8173:86:4:-;8239:13;;;;:4;;:13;;;;;:::i;2734:327:10:-;2461:5;2836:33;;;;;2828:88;;;;-1:-1:-1;;;2828:88:10;;25764:2:20;2828:88:10;;;25746:21:20;25803:2;25783:18;;;25776:30;25842:34;25822:18;;;25815:62;-1:-1:-1;;;25893:18:20;;;25886:40;25943:19;;2828:88:10;25736:232:20;2828:88:10;-1:-1:-1;;;;;2934:22:10;;2926:60;;;;-1:-1:-1;;;2926:60:10;;27806:2:20;2926:60:10;;;27788:21:20;27845:2;27825:18;;;27818:30;27884:27;27864:18;;;27857:55;27929:18;;2926:60:10;27778:175:20;2926:60:10;3019:35;;;;;;;;;-1:-1:-1;;;;;3019:35:10;;;;;;;;;;;;;;;;;-1:-1:-1;;;2997:57:10;;;;:19;:57;2734:327::o;9731:791:4:-;-1:-1:-1;;;;;9903:16:4;;9895:62;;;;-1:-1:-1;;;9895:62:4;;27404:2:20;9895:62:4;;;27386:21:20;27443:2;27423:18;;;27416:30;27482:34;27462:18;;;27455:62;-1:-1:-1;;;27533:18:20;;;27526:31;27574:19;;9895:62:4;27376:223:20;9895:62:4;9989:7;:14;9975:3;:10;:28;9967:81;;;;-1:-1:-1;;;9967:81:4;;26995:2:20;9967:81:4;;;26977:21:20;27034:2;27014:18;;;27007:30;27073:34;27053:18;;;27046:62;-1:-1:-1;;;27124:18:20;;;27117:38;27172:19;;9967:81:4;26967:230:20;9967:81:4;719:10:12;10101:66:4;719:10:12;10059:16:4;10144:2;10148:3;10153:7;10162:4;10101:20;:66::i;:::-;10183:9;10178:101;10202:3;:10;10198:1;:14;10178:101;;;10258:7;10266:1;10258:10;;;;;;-1:-1:-1;;;10258:10:4;;;;;;;;;;;;;;;10233:9;:17;10243:3;10247:1;10243:6;;;;;;-1:-1:-1;;;10243:6:4;;;;;;;;;;;;;;;10233:17;;;;;;;;;;;:21;10251:2;-1:-1:-1;;;;;10233:21:4;-1:-1:-1;;;;;10233:21:4;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;10214:3:4;;-1:-1:-1;10214:3:4;;;:::i;:::-;;;;10178:101;;;;10330:2;-1:-1:-1;;;;;10294:53:4;10326:1;-1:-1:-1;;;;;10294:53:4;10308:8;-1:-1:-1;;;;;10294:53:4;;10334:3;10339:7;10294:53;;;;;;;:::i;:::-;;;;;;;;10434:81;10470:8;10488:1;10492:2;10496:3;10501:7;10510:4;10434:35;:81::i;4339:165:15:-;4416:7;4442:55;4464:20;:18;:20::i;:::-;4486:10;9320:57:14;;12368:66:20;9320:57:14;;;12356:79:20;12451:11;;;12444:27;;;12487:12;;;12480:28;;;9284:7:14;;12524:12:20;;9320:57:14;;;;;;;;;;;;9310:68;;;;;;9303:75;;9191:194;;;;;4402:227;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;8632:709:4:-;-1:-1:-1;;;;;8779:16:4;;8771:62;;;;-1:-1:-1;;;8771:62:4;;27404:2:20;8771:62:4;;;27386:21:20;27443:2;27423:18;;;27416:30;27482:34;27462:18;;;27455:62;-1:-1:-1;;;27533:18:20;;;27526:31;27574:19;;8771:62:4;27376:223:20;8771:62:4;719:10:12;8844:16:4;8908:21;8926:2;8908:17;:21::i;:::-;8885:44;;8939:24;8966:25;8984:6;8966:17;:25::i;:::-;8939:52;;9002:66;9023:8;9041:1;9045:2;9049:3;9054:7;9063:4;9002:20;:66::i;:::-;9079:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9079:17:4;;;;;;;;;:27;;9100:6;;9079:9;:27;;9100:6;;9079:27;:::i;:::-;;;;-1:-1:-1;;9121:52:4;;;29583:25:20;;;29639:2;29624:18;;29617:34;;;-1:-1:-1;;;;;9121:52:4;;;;9154:1;;9121:52;;;;;;29556:18:20;9121:52:4;;;;;;;9260:74;9291:8;9309:1;9313:2;9317;9321:6;9329:4;9260:30;:74::i;:::-;8632:709;;;;;;;:::o;6235:1115::-;6455:7;:14;6441:3;:10;:28;6433:81;;;;-1:-1:-1;;;6433:81:4;;26995:2:20;6433:81:4;;;26977:21:20;27034:2;27014:18;;;27007:30;27073:34;27053:18;;;27046:62;-1:-1:-1;;;27124:18:20;;;27117:38;27172:19;;6433:81:4;26967:230:20;6433:81:4;-1:-1:-1;;;;;6532:16:4;;6524:66;;;;-1:-1:-1;;;6524:66:4;;23016:2:20;6524:66:4;;;22998:21:20;23055:2;23035:18;;;23028:30;23094:34;23074:18;;;23067:62;-1:-1:-1;;;23145:18:20;;;23138:35;23190:19;;6524:66:4;22988:227:20;6524:66:4;719:10:12;6643:60:4;719:10:12;6674:4:4;6680:2;6684:3;6689:7;6698:4;6643:20;:60::i;:::-;6719:9;6714:411;6738:3;:10;6734:1;:14;6714:411;;;6769:10;6782:3;6786:1;6782:6;;;;;;-1:-1:-1;;;6782:6:4;;;;;;;;;;;;;;;6769:19;;6802:14;6819:7;6827:1;6819:10;;;;;;-1:-1:-1;;;6819:10:4;;;;;;;;;;;;;;;;;;;;6844:19;6866:13;;;;;;;;;;-1:-1:-1;;;;;6866:19:4;;;;;;;;;;;;6819:10;;-1:-1:-1;6907:21:4;;;;6899:76;;;;-1:-1:-1;;;6899:76:4;;24229:2:20;6899:76:4;;;24211:21:20;24268:2;24248:18;;;24241:30;24307:34;24287:18;;;24280:62;-1:-1:-1;;;24358:18:20;;;24351:40;24408:19;;6899:76:4;24201:232:20;6899:76:4;7017:9;:13;;;;;;;;;;;-1:-1:-1;;;;;7017:19:4;;;;;;;;;;7039:20;;;7017:42;;7087:17;;;;;;;:27;;7039:20;;7017:9;7087:27;;7039:20;;7087:27;:::i;:::-;;;;;;;;6714:411;;;6750:3;;;;:::i;:::-;;;6714:411;;;;7170:2;-1:-1:-1;;;;;7140:47:4;7164:4;-1:-1:-1;;;;;7140:47:4;7154:8;-1:-1:-1;;;;;7140:47:4;;7174:3;7179:7;7140:47;;;;;;;:::i;:::-;;;;;;;;7268:75;7304:8;7314:4;7320:2;7324:3;7329:7;7338:4;7268:35;:75::i;:::-;6235:1115;;;;;;:::o;7474:233:0:-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7552:149;;7595:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7595:29:0;;;;;;;;;:36;;-1:-1:-1;;7595:36:0;7627:4;7595:36;;;7677:12;719:10:12;;640:96;7677:12:0;-1:-1:-1;;;;;7650:40:0;7668:7;-1:-1:-1;;;;;7650:40:0;7662:4;7650:40;;;;;;;;;;7474:233;;:::o;7878:234::-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;7957:149;;;8031:5;7999:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7999:29:0;;;;;;;;;;:37;;-1:-1:-1;;7999:37:0;;;8055:40;719:10:12;;7999:12:0;;8055:40;;8031:5;8055:40;7878:234;;:::o;2433:117:3:-;1486:16;:14;:16::i;:::-;2491:7:::1;:15:::0;;-1:-1:-1;;2491:15:3::1;::::0;;2521:22:::1;719:10:12::0;2530:12:3::1;2521:22;::::0;-1:-1:-1;;;;;13502:55:20;;;13484:74;;13472:2;13457:18;2521:22:3::1;;;;;;;2433:117::o:0;3495:381:10:-;2461:5;3642:33;;;;;3634:88;;;;-1:-1:-1;;;3634:88:10;;25764:2:20;3634:88:10;;;25746:21:20;25803:2;25783:18;;;25776:30;25842:34;25822:18;;;25815:62;-1:-1:-1;;;25893:18:20;;;25886:40;25943:19;;3634:88:10;25736:232:20;3634:88:10;-1:-1:-1;;;;;3740:22:10;;3732:62;;;;-1:-1:-1;;;3732:62:10;;25408:2:20;3732:62:10;;;25390:21:20;25447:2;25427:18;;;25420:30;25486:29;25466:18;;;25459:57;25533:18;;3732:62:10;25380:177:20;3732:62:10;3834:35;;;;;;;;-1:-1:-1;;;;;3834:35:10;;;;;;;;;;;;;;;;-1:-1:-1;3805:26:10;;;:17;:26;;;;;;:64;;;;;;;-1:-1:-1;;;3805:64:10;;;;;;3495:381::o;11833:943:4:-;-1:-1:-1;;;;;11980:18:4;;11972:66;;;;-1:-1:-1;;;11972:66:4;;23825:2:20;11972:66:4;;;23807:21:20;23864:2;23844:18;;;23837:30;23903:34;23883:18;;;23876:62;-1:-1:-1;;;23954:18:20;;;23947:33;23997:19;;11972:66:4;23797:225:20;11972:66:4;12070:7;:14;12056:3;:10;:28;12048:81;;;;-1:-1:-1;;;12048:81:4;;26995:2:20;12048:81:4;;;26977:21:20;27034:2;27014:18;;;27007:30;27073:34;27053:18;;;27046:62;-1:-1:-1;;;27124:18:20;;;27117:38;27172:19;;12048:81:4;26967:230:20;12048:81:4;12140:16;719:10:12;12140:31:4;;12182:66;12203:8;12213:4;12227:1;12231:3;12236:7;12182:66;;;;;;;;;;;;:20;:66::i;:::-;12264:9;12259:364;12283:3;:10;12279:1;:14;12259:364;;;12314:10;12327:3;12331:1;12327:6;;;;;;-1:-1:-1;;;12327:6:4;;;;;;;;;;;;;;;12314:19;;12347:14;12364:7;12372:1;12364:10;;;;;;-1:-1:-1;;;12364:10:4;;;;;;;;;;;;;;;;;;;;12389:19;12411:13;;;;;;;;;;-1:-1:-1;;;;;12411:19:4;;;;;;;;;;;;12364:10;;-1:-1:-1;12452:21:4;;;;12444:70;;;;-1:-1:-1;;;12444:70:4;;21099:2:20;12444:70:4;;;21081:21:20;21138:2;21118:18;;;21111:30;21177:34;21157:18;;;21150:62;-1:-1:-1;;;21228:18:20;;;21221:34;21272:19;;12444:70:4;21071:226:20;12444:70:4;12556:9;:13;;;;;;;;;;;-1:-1:-1;;;;;12556:19:4;;;;;;;;;;12578:20;;12556:42;;12295:3;;;;:::i;:::-;;;;12259:364;;;;12676:1;-1:-1:-1;;;;;12638:55:4;12662:4;-1:-1:-1;;;;;12638:55:4;12652:8;-1:-1:-1;;;;;12638:55:4;;12680:3;12685:7;12638:55;;;;;;;:::i;:::-;;;;;;;;12704:65;;;;;;;;;12748:1;12704:65;;;6235:1115;2186:115:3;1239:19;:17;:19::i;:::-;2245:7:::1;:14:::0;;-1:-1:-1;;2245:14:3::1;2255:4;2245:14;::::0;;2274:20:::1;2281:12;719:10:12::0;;640:96;12912:323:4;13062:8;-1:-1:-1;;;;;13053:17:4;:5;-1:-1:-1;;;;;13053:17:4;;;13045:71;;;;-1:-1:-1;;;13045:71:4;;26175:2:20;13045:71:4;;;26157:21:20;26214:2;26194:18;;;26187:30;26253:34;26233:18;;;26226:62;26324:11;26304:18;;;26297:39;26353:19;;13045:71:4;26147:231:20;13045:71:4;-1:-1:-1;;;;;13126:25:4;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13126:46:4;;;;;;;;;;13187:41;;16189::20;;;13187::4;;16162:18:20;13187:41:4;;;;;;;12912:323;;;:::o;4942:947::-;-1:-1:-1;;;;;5123:16:4;;5115:66;;;;-1:-1:-1;;;5115:66:4;;23016:2:20;5115:66:4;;;22998:21:20;23055:2;23035:18;;;23028:30;23094:34;23074:18;;;23067:62;-1:-1:-1;;;23145:18:20;;;23138:35;23190:19;;5115:66:4;22988:227:20;5115:66:4;719:10:12;5192:16:4;5256:21;5274:2;5256:17;:21::i;:::-;5233:44;;5287:24;5314:25;5332:6;5314:17;:25::i;:::-;5287:52;;5350:60;5371:8;5381:4;5387:2;5391:3;5396:7;5405:4;5350:20;:60::i;:::-;5421:19;5443:13;;;;;;;;;;;-1:-1:-1;;;;;5443:19:4;;;;;;;;;;5480:21;;;;5472:76;;;;-1:-1:-1;;;5472:76:4;;24229:2:20;5472:76:4;;;24211:21:20;24268:2;24248:18;;;24241:30;24307:34;24287:18;;;24280:62;-1:-1:-1;;;24358:18:20;;;24351:40;24408:19;;5472:76:4;24201:232:20;5472:76:4;5582:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5582:19:4;;;;;;;;;;5604:20;;;5582:42;;5644:17;;;;;;;:27;;5604:20;;5582:9;5644:27;;5604:20;;5644:27;:::i;:::-;;;;-1:-1:-1;;5687:46:4;;;29583:25:20;;;29639:2;29624:18;;29617:34;;;-1:-1:-1;;;;;5687:46:4;;;;;;;;;;;;;;29556:18:20;5687:46:4;;;;;;;5814:68;5845:8;5855:4;5861:2;5865;5869:6;5877:4;5814:30;:68::i;:::-;4942:947;;;;;;;;;:::o;10808:786::-;-1:-1:-1;;;;;10930:18:4;;10922:66;;;;-1:-1:-1;;;10922:66:4;;23825:2:20;10922:66:4;;;23807:21:20;23864:2;23844:18;;;23837:30;23903:34;23883:18;;;23876:62;-1:-1:-1;;;23954:18:20;;;23947:33;23997:19;;10922:66:4;23797:225:20;10922:66:4;719:10:12;10999:16:4;11063:21;11081:2;11063:17;:21::i;:::-;11040:44;;11094:24;11121:25;11139:6;11121:17;:25::i;:::-;11094:52;;11157:66;11178:8;11188:4;11202:1;11206:3;11211:7;11157:66;;;;;;;;;;;;:20;:66::i;:::-;11234:19;11256:13;;;;;;;;;;;-1:-1:-1;;;;;11256:19:4;;;;;;;;;;11293:21;;;;11285:70;;;;-1:-1:-1;;;11285:70:4;;21099:2:20;11285:70:4;;;21081:21:20;21138:2;21118:18;;;21111:30;21177:34;21157:18;;;21150:62;-1:-1:-1;;;21228:18:20;;;21221:34;21272:19;;11285:70:4;21071:226:20;11285:70:4;11389:9;:13;;;;;;;;;;;-1:-1:-1;;;;;11389:19:4;;;;;;;;;;;;11411:20;;;11389:42;;11457:54;;29583:25:20;;;29624:18;;;29617:34;;;11389:19:4;;11457:54;;;;;;29556:18:20;11457:54:4;;;;;;;11522:65;;;;;;;;;11566:1;11522:65;;;6235:1115;1408:213:10;1510:4;-1:-1:-1;;;;;;1533:41:10;;1548:26;1533:41;;:81;;;1578:36;1602:11;1578:23;:36::i;3718:492:0:-;2981:4;3004:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;3801:403;;3989:41;4017:7;-1:-1:-1;;;;;3989:41:0;4027:2;3989:19;:41::i;:::-;4101:38;4129:4;4136:2;4101:19;:38::i;:::-;3896:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:265:0;;;;;;;;;;-1:-1:-1;;;3844:349:0;;;;;;;:::i;4815:302:19:-;1239:19:3;:17;:19::i;:::-;5046:66:19::1;5073:8;5083:4;5089:2;5093:3;5098:7;5107:4;5046:26;:66::i;16268:792:4:-:0;-1:-1:-1;;;;;16500:13:4;;1465:19:11;:23;16496:558:4;;16535:79;;-1:-1:-1;;;16535:79:4;;-1:-1:-1;;;;;16535:43:4;;;;;:79;;16579:8;;16589:4;;16595:3;;16600:7;;16609:4;;16535:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16535:79:4;;;;;;;;-1:-1:-1;;16535:79:4;;;;;;;;;;;;:::i;:::-;;;16531:513;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16920:6;16913:14;;-1:-1:-1;;;16913:14:4;;;;;;;;:::i;16531:513::-;;;16967:62;;-1:-1:-1;;;16967:62:4;;18783:2:20;16967:62:4;;;18765:21:20;18822:2;18802:18;;;18795:30;18861:34;18841:18;;;18834:62;18932:22;18912:18;;;18905:50;18972:19;;16967:62:4;18755:242:20;16531:513:4;-1:-1:-1;;;;;;16693:60:4;;-1:-1:-1;;;16693:60:4;16689:157;;16777:50;;-1:-1:-1;;;16777:50:4;;19981:2:20;16777:50:4;;;19963:21:20;20020:2;20000:18;;;19993:30;20059:34;20039:18;;;20032:62;-1:-1:-1;;;20110:18:20;;;20103:38;20158:19;;16777:50:4;19953:230:20;3143:308:15;3196:7;3227:4;-1:-1:-1;;;;;3236:12:15;3219:29;;:66;;;;;3269:16;3252:13;:33;3219:66;3215:230;;;-1:-1:-1;3308:24:15;;3143:308::o;3215:230::-;-1:-1:-1;3633:73:15;;;3392:10;3633:73;;;;16682:25:20;;;;3404:12:15;16723:18:20;;;16716:34;3418:15:15;16766:18:20;;;16759:34;3677:13:15;16809:18:20;;;16802:34;3700:4:15;16852:19:20;;;;16845:84;;;;3633:73:15;;;;;;;;;;16654:19:20;;;;3633:73:15;;;3623:84;;;;;;3143:308::o;3215:230::-;3143:308;:::o;2243:1373:14:-;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:14;;-1:-1:-1;3563:35:14;3543:56;;548:631;625:20;616:5;:29;;;;;;-1:-1:-1;;;616:29:14;;;;;;;;;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;-1:-1:-1;;;712:38:14;;;;;;;;;;708:465;;;766:34;;-1:-1:-1;;;766:34:14;;18430:2:20;766:34:14;;;18412:21:20;18469:2;18449:18;;;18442:30;18508:26;18488:18;;;18481:54;18552:18;;766:34:14;18402:174:20;708:465:14;830:35;821:5;:44;;;;;;-1:-1:-1;;;821:44:14;;;;;;;;;;817:356;;;881:41;;-1:-1:-1;;;881:41:14;;20739:2:20;881:41:14;;;20721:21:20;20778:2;20758:18;;;20751:30;20817:33;20797:18;;;20790:61;20868:18;;881:41:14;20711:181:20;817:356:14;952:30;943:5;:39;;;;;;-1:-1:-1;;;943:39:14;;;;;;;;;;939:234;;;998:44;;-1:-1:-1;;;998:44:14;;21915:2:20;998:44:14;;;21897:21:20;21954:2;21934:18;;;21927:30;21993:34;21973:18;;;21966:62;-1:-1:-1;;;22044:18:20;;;22037:32;22086:19;;998:44:14;21887:224:20;939:234:14;1072:30;1063:5;:39;;;;;;-1:-1:-1;;;1063:39:14;;;;;;;;;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:14;;23422:2:20;1118:44:14;;;23404:21:20;23461:2;23441:18;;;23434:30;23500:34;23480:18;;;23473:62;-1:-1:-1;;;23551:18:20;;;23544:32;23593:19;;1118:44:14;23394:224:20;17066:193:4;17185:16;;;17199:1;17185:16;;;;;;;;;17132;;17160:22;;17185:16;;;;;;;;;;;;-1:-1:-1;17185:16:4;17160:41;;17222:7;17211:5;17217:1;17211:8;;;;;;-1:-1:-1;;;17211:8:4;;;;;;;;;;;;;;;;;;:18;17247:5;17066:193;-1:-1:-1;;17066:193:4:o;15537:725::-;-1:-1:-1;;;;;15744:13:4;;1465:19:11;:23;15740:516:4;;15779:72;;-1:-1:-1;;;15779:72:4;;-1:-1:-1;;;;;15779:38:4;;;;;:72;;15818:8;;15828:4;;15834:2;;15838:6;;15846:4;;15779:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15779:72:4;;;;;;;;-1:-1:-1;;15779:72:4;;;;;;;;;;;;:::i;:::-;;;15775:471;;;;:::i;:::-;-1:-1:-1;;;;;;15900:55:4;;-1:-1:-1;;;15900:55:4;15896:152;;15979:50;;-1:-1:-1;;;15979:50:4;;19981:2:20;15979:50:4;;;19963:21:20;20020:2;20000:18;;;19993:30;20059:34;20039:18;;;20032:62;-1:-1:-1;;;20110:18:20;;;20103:38;20158:19;;15979:50:4;19953:230:20;1945:106:3;1685:7;;;;2003:41;;;;-1:-1:-1;;;2003:41:3;;20390:2:20;2003:41:3;;;20372:21:20;20429:2;20409:18;;;20402:30;20468:22;20448:18;;;20441:50;20508:18;;2003:41:3;20362:170:20;2003:41:3;1945:106::o;1767:::-;1685:7;;;;1836:9;1828:38;;;;-1:-1:-1;;;1828:38:3;;22671:2:20;1828:38:3;;;22653:21:20;22710:2;22690:18;;;22683:30;22749:18;22729;;;22722:46;22785:18;;1828:38:3;22643:166:20;1236:305:4;1338:4;-1:-1:-1;;;;;;1373:41:4;;1388:26;1373:41;;:109;;-1:-1:-1;;;;;;;1430:52:4;;1445:37;1430:52;1373:109;:161;;;-1:-1:-1;952:25:16;-1:-1:-1;;;;;;937:40:16;;;1498:36:4;829:155:16;1091:904:8;-1:-1:-1;;;;;1403:18:8;;1399:156;;1442:9;1437:108;1461:3;:10;1457:1;:14;1437:108;;;1520:7;1528:1;1520:10;;;;;;-1:-1:-1;;;1520:10:8;;;;;;;;;;;;;;;1496:12;:20;1509:3;1513:1;1509:6;;;;;;-1:-1:-1;;;1509:6:8;;;;;;;;;;;;;;;1496:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1473:3:8;;-1:-1:-1;1473:3:8;;:::i;:::-;;;1437:108;;;;1399:156;-1:-1:-1;;;;;1569:16:8;;1565:424;;1606:9;1601:378;1625:3;:10;1621:1;:14;1601:378;;;1660:10;1673:3;1677:1;1673:6;;;;;;-1:-1:-1;;;1673:6:8;;;;;;;;;;;;;;;1660:19;;1697:14;1714:7;1722:1;1714:10;;;;;;-1:-1:-1;;;1714:10:8;;;;;;;;;;;;;;;1697:27;;1742:14;1759:12;:16;1772:2;1759:16;;;;;;;;;;;;1742:33;;1811:6;1801;:16;;1793:69;;;;-1:-1:-1;;;1793:69:8;;24640:2:20;1793:69:8;;;24622:21:20;24679:2;24659:18;;;24652:30;24718:34;24698:18;;;24691:62;24789:10;24769:18;;;24762:38;24817:19;;1793:69:8;24612:230:20;1793:69:8;1912:16;;;;:12;:16;;;;;;1931:15;;1912:34;;1637:3;;;:::i;:::-;;;1601:378;;5810:1603:14;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:14;;-1:-1:-1;6962:30:14;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:14;;-1:-1:-1;7071:30:14;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;17828:25:20;;;17901:4;17889:17;;17869:18;;;17862:45;;;;17923:18;;;17916:34;;;17966:18;;;17959:34;;;7224:24:14;;17800:19:20;;7224:24:14;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:14;;-1:-1:-1;;7224:24:14;;;-1:-1:-1;;;;;;;7262:20:14;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:14;;-1:-1:-1;5810:1603:14;;;;;;;;:::o;4883:336::-;4993:7;;5051:66;5038:80;;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:196:20;82:20;;-1:-1:-1;;;;;131:54:20;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:755::-;269:5;322:3;315:4;307:6;303:17;299:27;289:2;;344:5;337;330:20;289:2;384:6;371:20;410:4;433:43;473:2;433:43;:::i;:::-;505:2;499:9;517:31;545:2;537:6;517:31;:::i;:::-;583:18;;;617:15;;;;-1:-1:-1;652:15:20;;;702:1;698:10;;;686:23;;682:32;;679:41;-1:-1:-1;676:2:20;;;737:5;730;723:20;676:2;763:5;777:163;791:2;788:1;785:9;777:163;;;848:17;;836:30;;886:12;;;;918;;;;809:1;802:9;777:163;;;-1:-1:-1;958:6:20;;279:691;-1:-1:-1;;;;;;;279:691:20:o;975:575::-;1017:5;1070:3;1063:4;1055:6;1051:17;1047:27;1037:2;;1092:5;1085;1078:20;1037:2;1132:6;1119:20;1158:18;1154:2;1151:26;1148:2;;;1180:18;;:::i;:::-;1229:2;1223:9;1241:67;1296:2;1277:13;;-1:-1:-1;;1273:27:20;1302:4;1269:38;1223:9;1241:67;:::i;:::-;1332:2;1324:6;1317:18;1378:3;1371:4;1366:2;1358:6;1354:15;1350:26;1347:35;1344:2;;;1399:5;1392;1385:20;1344:2;1467;1460:4;1452:6;1448:17;1441:4;1433:6;1429:17;1416:54;1490:15;;;1507:4;1486:26;1479:41;;;;1494:6;1027:523;-1:-1:-1;;1027:523:20:o;1555:179::-;1622:20;;1682:26;1671:38;;1661:49;;1651:2;;1724:1;1721;1714:12;1739:270;1807:6;1815;1868:2;1856:9;1847:7;1843:23;1839:32;1836:2;;;1889:6;1881;1874:22;1836:2;1917:29;1936:9;1917:29;:::i;:::-;1907:39;;1965:38;1999:2;1988:9;1984:18;1965:38;:::i;:::-;1955:48;;1826:183;;;;;:::o;2014:983::-;2168:6;2176;2184;2192;2200;2253:3;2241:9;2232:7;2228:23;2224:33;2221:2;;;2275:6;2267;2260:22;2221:2;2303:29;2322:9;2303:29;:::i;:::-;2293:39;;2351:38;2385:2;2374:9;2370:18;2351:38;:::i;:::-;2341:48;;2440:2;2429:9;2425:18;2412:32;2463:18;2504:2;2496:6;2493:14;2490:2;;;2525:6;2517;2510:22;2490:2;2553:61;2606:7;2597:6;2586:9;2582:22;2553:61;:::i;:::-;2543:71;;2667:2;2656:9;2652:18;2639:32;2623:48;;2696:2;2686:8;2683:16;2680:2;;;2717:6;2709;2702:22;2680:2;2745:63;2800:7;2789:8;2778:9;2774:24;2745:63;:::i;:::-;2735:73;;2861:3;2850:9;2846:19;2833:33;2817:49;;2891:2;2881:8;2878:16;2875:2;;;2912:6;2904;2897:22;2875:2;;2940:51;2983:7;2972:8;2961:9;2957:24;2940:51;:::i;:::-;2930:61;;;2211:786;;;;;;;;:::o;3002:626::-;3106:6;3114;3122;3130;3138;3191:3;3179:9;3170:7;3166:23;3162:33;3159:2;;;3213:6;3205;3198:22;3159:2;3241:29;3260:9;3241:29;:::i;:::-;3231:39;;3289:38;3323:2;3312:9;3308:18;3289:38;:::i;:::-;3279:48;;3374:2;3363:9;3359:18;3346:32;3336:42;;3425:2;3414:9;3410:18;3397:32;3387:42;;3480:3;3469:9;3465:19;3452:33;3508:18;3500:6;3497:30;3494:2;;;3545:6;3537;3530:22;3494:2;3573:49;3614:7;3605:6;3594:9;3590:22;3573:49;:::i;3633:699::-;3760:6;3768;3776;3829:2;3817:9;3808:7;3804:23;3800:32;3797:2;;;3850:6;3842;3835:22;3797:2;3878:29;3897:9;3878:29;:::i;:::-;3868:39;;3958:2;3947:9;3943:18;3930:32;3981:18;4022:2;4014:6;4011:14;4008:2;;;4043:6;4035;4028:22;4008:2;4071:61;4124:7;4115:6;4104:9;4100:22;4071:61;:::i;:::-;4061:71;;4185:2;4174:9;4170:18;4157:32;4141:48;;4214:2;4204:8;4201:16;4198:2;;;4235:6;4227;4220:22;4198:2;;4263:63;4318:7;4307:8;4296:9;4292:24;4263:63;:::i;:::-;4253:73;;;3787:545;;;;;:::o;4337:908::-;4482:6;4490;4498;4506;4559:3;4547:9;4538:7;4534:23;4530:33;4527:2;;;4581:6;4573;4566:22;4527:2;4609:29;4628:9;4609:29;:::i;:::-;4599:39;;4689:2;4678:9;4674:18;4661:32;4712:18;4753:2;4745:6;4742:14;4739:2;;;4774:6;4766;4759:22;4739:2;4802:61;4855:7;4846:6;4835:9;4831:22;4802:61;:::i;:::-;4792:71;;4916:2;4905:9;4901:18;4888:32;4872:48;;4945:2;4935:8;4932:16;4929:2;;;4966:6;4958;4951:22;4929:2;4994:63;5049:7;5038:8;5027:9;5023:24;4994:63;:::i;:::-;4984:73;;5110:2;5099:9;5095:18;5082:32;5066:48;;5139:2;5129:8;5126:16;5123:2;;;5160:6;5152;5145:22;5123:2;;5188:51;5231:7;5220:8;5209:9;5205:24;5188:51;:::i;:::-;5178:61;;;4517:728;;;;;;;:::o;5250:367::-;5315:6;5323;5376:2;5364:9;5355:7;5351:23;5347:32;5344:2;;;5397:6;5389;5382:22;5344:2;5425:29;5444:9;5425:29;:::i;:::-;5415:39;;5504:2;5493:9;5489:18;5476:32;5551:5;5544:13;5537:21;5530:5;5527:32;5517:2;;5578:6;5570;5563:22;5517:2;5606:5;5596:15;;;5334:283;;;;;:::o;5622:264::-;5690:6;5698;5751:2;5739:9;5730:7;5726:23;5722:32;5719:2;;;5772:6;5764;5757:22;5719:2;5800:29;5819:9;5800:29;:::i;:::-;5790:39;5876:2;5861:18;;;;5848:32;;-1:-1:-1;;;5709:177:20:o;5891:332::-;5968:6;5976;5984;6037:2;6025:9;6016:7;6012:23;6008:32;6005:2;;;6058:6;6050;6043:22;6005:2;6086:29;6105:9;6086:29;:::i;:::-;6076:39;6162:2;6147:18;;6134:32;;-1:-1:-1;6213:2:20;6198:18;;;6185:32;;5995:228;-1:-1:-1;;;5995:228:20:o;6228:551::-;6323:6;6331;6339;6347;6400:3;6388:9;6379:7;6375:23;6371:33;6368:2;;;6422:6;6414;6407:22;6368:2;6450:29;6469:9;6450:29;:::i;:::-;6440:39;;6526:2;6515:9;6511:18;6498:32;6488:42;;6577:2;6566:9;6562:18;6549:32;6539:42;;6632:2;6621:9;6617:18;6604:32;6659:18;6651:6;6648:30;6645:2;;;6696:6;6688;6681:22;6645:2;6724:49;6765:7;6756:6;6745:9;6741:22;6724:49;:::i;6784:268::-;6851:6;6859;6912:2;6900:9;6891:7;6887:23;6883:32;6880:2;;;6933:6;6925;6918:22;6880:2;6961:29;6980:9;6961:29;:::i;:::-;6951:39;;7009:37;7042:2;7031:9;7027:18;7009:37;:::i;7057:1274::-;7175:6;7183;7236:2;7224:9;7215:7;7211:23;7207:32;7204:2;;;7257:6;7249;7242:22;7204:2;7302:9;7289:23;7331:18;7372:2;7364:6;7361:14;7358:2;;;7393:6;7385;7378:22;7358:2;7436:6;7425:9;7421:22;7411:32;;7481:7;7474:4;7470:2;7466:13;7462:27;7452:2;;7508:6;7500;7493:22;7452:2;7549;7536:16;7571:4;7594:43;7634:2;7594:43;:::i;:::-;7666:2;7660:9;7678:31;7706:2;7698:6;7678:31;:::i;:::-;7744:18;;;7778:15;;;;-1:-1:-1;7813:11:20;;;7855:1;7851:10;;;7843:19;;7839:28;;7836:41;-1:-1:-1;7833:2:20;;;7895:6;7887;7880:22;7833:2;7922:6;7913:15;;7937:169;7951:2;7948:1;7945:9;7937:169;;;8008:23;8027:3;8008:23;:::i;:::-;7996:36;;7969:1;7962:9;;;;;8052:12;;;;8084;;7937:169;;;-1:-1:-1;8125:6:20;-1:-1:-1;;8169:18:20;;8156:32;;-1:-1:-1;;8200:16:20;;;8197:2;;;8234:6;8226;8219:22;8197:2;;8262:63;8317:7;8306:8;8295:9;8291:24;8262:63;:::i;:::-;8252:73;;;7194:1137;;;;;:::o;8336:190::-;8395:6;8448:2;8436:9;8427:7;8423:23;8419:32;8416:2;;;8469:6;8461;8454:22;8416:2;-1:-1:-1;8497:23:20;;8406:120;-1:-1:-1;8406:120:20:o;8531:264::-;8599:6;8607;8660:2;8648:9;8639:7;8635:23;8631:32;8628:2;;;8681:6;8673;8666:22;8628:2;8722:9;8709:23;8699:33;;8751:38;8785:2;8774:9;8770:18;8751:38;:::i;8800:255::-;8858:6;8911:2;8899:9;8890:7;8886:23;8882:32;8879:2;;;8932:6;8924;8917:22;8879:2;8976:9;8963:23;8995:30;9019:5;8995:30;:::i;9060:259::-;9129:6;9182:2;9170:9;9161:7;9157:23;9153:32;9150:2;;;9203:6;9195;9188:22;9150:2;9240:9;9234:16;9259:30;9283:5;9259:30;:::i;9324:920::-;9456:6;9464;9472;9480;9488;9496;9504;9557:3;9545:9;9536:7;9532:23;9528:33;9525:2;;;9579:6;9571;9564:22;9525:2;9624:9;9611:23;9653:18;9694:2;9686:6;9683:14;9680:2;;;9715:6;9707;9700:22;9680:2;9743:49;9784:7;9775:6;9764:9;9760:22;9743:49;:::i;:::-;9733:59;;9839:2;9828:9;9824:18;9811:32;9801:42;;9862:38;9896:2;9885:9;9881:18;9862:38;:::i;:::-;9852:48;;9947:2;9936:9;9932:18;9919:32;9909:42;;9998:3;9987:9;9983:19;9970:33;9960:43;;10050:3;10039:9;10035:19;10022:33;10012:43;;10108:3;10097:9;10093:19;10080:33;10064:49;;10138:2;10128:8;10125:16;10122:2;;;10159:6;10151;10144:22;10122:2;;10187:51;10230:7;10219:8;10208:9;10204:24;10187:51;:::i;:::-;10177:61;;;9515:729;;;;;;;;;;:::o;10249:341::-;10318:6;10371:2;10359:9;10350:7;10346:23;10342:32;10339:2;;;10392:6;10384;10377:22;10339:2;10437:9;10424:23;10470:18;10462:6;10459:30;10456:2;;;10507:6;10499;10492:22;10456:2;10535:49;10576:7;10567:6;10556:9;10552:22;10535:49;:::i;:::-;10525:59;10329:261;-1:-1:-1;;;;10329:261:20:o;10790:336::-;10866:6;10874;10882;10935:2;10923:9;10914:7;10910:23;10906:32;10903:2;;;10956:6;10948;10941:22;10903:2;10997:9;10984:23;10974:33;;11026:38;11060:2;11049:9;11045:18;11026:38;:::i;:::-;11016:48;;11083:37;11116:2;11105:9;11101:18;11083:37;:::i;:::-;11073:47;;10893:233;;;;;:::o;11131:258::-;11199:6;11207;11260:2;11248:9;11239:7;11235:23;11231:32;11228:2;;;11281:6;11273;11266:22;11228:2;-1:-1:-1;;11309:23:20;;;11379:2;11364:18;;;11351:32;;-1:-1:-1;11218:171:20:o;11394:437::-;11447:3;11485:5;11479:12;11512:6;11507:3;11500:19;11538:4;11567:2;11562:3;11558:12;11551:19;;11604:2;11597:5;11593:14;11625:3;11637:169;11651:6;11648:1;11645:13;11637:169;;;11712:13;;11700:26;;11746:12;;;;11781:15;;;;11673:1;11666:9;11637:169;;;-1:-1:-1;11822:3:20;;11455:376;-1:-1:-1;;;;;11455:376:20:o;11836:257::-;11877:3;11915:5;11909:12;11942:6;11937:3;11930:19;11958:63;12014:6;12007:4;12002:3;11998:14;11991:4;11984:5;11980:16;11958:63;:::i;:::-;12075:2;12054:15;-1:-1:-1;;12050:29:20;12041:39;;;;12082:4;12037:50;;11885:208;-1:-1:-1;;11885:208:20:o;12547:786::-;12958:25;12953:3;12946:38;12928:3;13013:6;13007:13;13029:62;13084:6;13079:2;13074:3;13070:12;13063:4;13055:6;13051:17;13029:62;:::i;:::-;13155:19;13150:2;13110:16;;;13142:11;;;13135:40;13200:13;;13222:63;13200:13;13271:2;13263:11;;13256:4;13244:17;;13222:63;:::i;:::-;13305:17;13324:2;13301:26;;12936:397;-1:-1:-1;;;;12936:397:20:o;13569:849::-;13891:4;-1:-1:-1;;;;;14001:2:20;13993:6;13989:15;13978:9;13971:34;14053:2;14045:6;14041:15;14036:2;14025:9;14021:18;14014:43;;14093:3;14088:2;14077:9;14073:18;14066:31;14120:57;14172:3;14161:9;14157:19;14149:6;14120:57;:::i;:::-;14225:9;14217:6;14213:22;14208:2;14197:9;14193:18;14186:50;14259:44;14296:6;14288;14259:44;:::i;:::-;14245:58;;14352:9;14344:6;14340:22;14334:3;14323:9;14319:19;14312:51;14380:32;14405:6;14397;14380:32;:::i;:::-;14372:40;13900:518;-1:-1:-1;;;;;;;;13900:518:20:o;14423:583::-;14645:4;-1:-1:-1;;;;;14755:2:20;14747:6;14743:15;14732:9;14725:34;14807:2;14799:6;14795:15;14790:2;14779:9;14775:18;14768:43;;14847:6;14842:2;14831:9;14827:18;14820:34;14890:6;14885:2;14874:9;14870:18;14863:34;14934:3;14928;14917:9;14913:19;14906:32;14955:45;14995:3;14984:9;14980:19;14972:6;14955:45;:::i;:::-;14947:53;14654:352;-1:-1:-1;;;;;;;14654:352:20:o;15313:261::-;15492:2;15481:9;15474:21;15455:4;15512:56;15564:2;15553:9;15549:18;15541:6;15512:56;:::i;15579:465::-;15836:2;15825:9;15818:21;15799:4;15862:56;15914:2;15903:9;15899:18;15891:6;15862:56;:::i;:::-;15966:9;15958:6;15954:22;15949:2;15938:9;15934:18;15927:50;15994:44;16031:6;16023;15994:44;:::i;:::-;15986:52;15808:236;-1:-1:-1;;;;;15808:236:20:o;18004:219::-;18153:2;18142:9;18135:21;18116:4;18173:44;18213:2;18202:9;18198:18;18190:6;18173:44;:::i;29662:183::-;29722:4;29755:18;29747:6;29744:30;29741:2;;;29777:18;;:::i;:::-;-1:-1:-1;29822:1:20;29818:14;29834:4;29814:25;;29731:114::o;29850:128::-;29890:3;29921:1;29917:6;29914:1;29911:13;29908:2;;;29927:18;;:::i;:::-;-1:-1:-1;29963:9:20;;29898:80::o;29983:274::-;30023:1;30049;30039:2;;-1:-1:-1;;;30081:1:20;30074:88;30185:4;30182:1;30175:15;30213:4;30210:1;30203:15;30039:2;-1:-1:-1;30242:9:20;;30029:228::o;30262:168::-;30302:7;30368:1;30364;30360:6;30356:14;30353:1;30350:21;30345:1;30338:9;30331:17;30327:45;30324:2;;;30375:18;;:::i;:::-;-1:-1:-1;30415:9:20;;30314:116::o;30435:258::-;30507:1;30517:113;30531:6;30528:1;30525:13;30517:113;;;30607:11;;;30601:18;30588:11;;;30581:39;30553:2;30546:10;30517:113;;;30648:6;30645:1;30642:13;30639:2;;;-1:-1:-1;;30683:1:20;30665:16;;30658:27;30488:205::o;30698:136::-;30737:3;30765:5;30755:2;;30774:18;;:::i;:::-;-1:-1:-1;;;30810:18:20;;30745:89::o;30839:437::-;30918:1;30914:12;;;;30961;;;30982:2;;31036:4;31028:6;31024:17;31014:27;;30982:2;31089;31081:6;31078:14;31058:18;31055:38;31052:2;;;-1:-1:-1;;;31123:1:20;31116:88;31227:4;31224:1;31217:15;31255:4;31252:1;31245:15;31052:2;;30894:382;;;:::o;31281:249::-;31391:2;31372:13;;-1:-1:-1;;31368:27:20;31356:40;;31426:18;31411:34;;31447:22;;;31408:62;31405:2;;;31473:18;;:::i;:::-;31509:2;31502:22;-1:-1:-1;;31328:202:20:o;31535:135::-;31574:3;-1:-1:-1;;31595:17:20;;31592:2;;;31615:18;;:::i;:::-;-1:-1:-1;31662:1:20;31651:13;;31582:88::o;31675:184::-;-1:-1:-1;;;31724:1:20;31717:88;31824:4;31821:1;31814:15;31848:4;31845:1;31838:15;31864:184;-1:-1:-1;;;31913:1:20;31906:88;32013:4;32010:1;32003:15;32037:4;32034:1;32027:15;32053:185;32088:3;32130:1;32112:16;32109:23;32106:2;;;32180:1;32175:3;32170;32155:27;32211:10;32206:3;32202:20;32096:142;:::o;32243:671::-;32282:3;32324:4;32306:16;32303:26;32300:2;;;32290:624;:::o;32300:2::-;32366;32360:9;-1:-1:-1;;32431:16:20;32427:25;;32424:1;32360:9;32403:50;32482:4;32476:11;32506:16;32541:18;32612:2;32605:4;32597:6;32593:17;32590:25;32585:2;32577:6;32574:14;32571:45;32568:2;;;32619:5;;;;;32290:624;:::o;32568:2::-;32656:6;32650:4;32646:17;32635:28;;32692:3;32686:10;32719:2;32711:6;32708:14;32705:2;;;32725:5;;;;;;32290:624;:::o;32705:2::-;32809;32790:16;32784:4;32780:27;32776:36;32769:4;32760:6;32755:3;32751:16;32747:27;32744:69;32741:2;;;32816:5;;;;;;32290:624;:::o;32741:2::-;32832:57;32883:4;32874:6;32866;32862:19;32858:30;32852:4;32832:57;:::i;:::-;-1:-1:-1;32905:3:20;;32290:624;-1:-1:-1;;;;;32290:624:20:o;32919:177::-;-1:-1:-1;;;;;;32997:5:20;32993:78;32986:5;32983:89;32973:2;;33086:1;33083;33076:12"
            },
            "methodIdentifiers": {
              "CONTRACT_URI_SETTER_ROLE()": "121df247",
              "DEFAULT_ADMIN_ROLE()": "a217fddf",
              "MINTER_ROLE()": "d5391393",
              "PAUSER_ROLE()": "e63ab1e9",
              "ROYALTY_ROLE()": "cb9fcffb",
              "TRANSFERRER_ROLE()": "63ac5d97",
              "URI_SETTER_ROLE()": "7f345710",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "burn(address,uint256,uint256)": "f5298aca",
              "burnBatch(address,uint256[],uint256[])": "6b20c454",
              "contractURI()": "e8a3d485",
              "deleteDefaultRoyalty()": "aa1b103f",
              "exists(uint256)": "4f558e79",
              "getRoleAdmin(bytes32)": "248a9ca3",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mint(address,uint256,uint256,bytes)": "731133e9",
              "mintBatch(address,uint256[],uint256[],bytes)": "1f7fdffa",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "renounceRole(bytes32,address)": "36568abe",
              "resetTokenRoyalty(uint256)": "8a616bc0",
              "revokeRole(bytes32,address)": "d547741f",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setContractURI(string)": "938e3d7b",
              "setDefaultRoyalty(address,uint96)": "04634d8d",
              "setTokenRoyalty(uint256,address,uint96)": "5944c753",
              "setURI(string)": "02fe5305",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "transferWithTransferPass(bytes,uint256,address,uint256,uint256,uint256,string)": "23a45c61",
              "unpause()": "3f4ba83a",
              "uri(uint256)": "0e89341c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transferrer\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newContractURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"royaltyFeeNumerator\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"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\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"passId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferWithTransferPass\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONTRACT_URI_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROYALTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFERRER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"URI_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteDefaultRoyalty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"resetTokenRoyalty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"\",\"type\":\"address\"},{\"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\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"feeNumerator\",\"type\":\"uint96\"}],\"name\":\"setDefaultRoyalty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"feeNumerator\",\"type\":\"uint96\"}],\"name\":\"setTokenRoyalty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"setURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"passId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"transferWithTransferPass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"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.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/LiquiditeamNftV2.sol\":\"LiquiditeamNftV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x5b35d8e68aeaccc685239bd9dd79b9ba01a0357930f8a3307ab85511733d9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba8eb2d22f9321bd4660f6617c181d9611ff30a9b089408b8c6e2216d6d5cdc5\",\"dweb:/ipfs/QmTSJvhjHfnUV1j4hsqDv8PmLvGBLRs9gHLjTUXrUJ5Y9q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xa812eed728198acd2c30d06950a5bea8d68436e4f694dd892273266ec2f79f5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5522afc5c222c810d9ad67c45f37cb7169452fcf76692cad10ac8153c068daa\",\"dweb:/ipfs/QmX4XgnDp7pyvojQ6g5tacrUMCf7TED2qC2vERH9Xh9feZ\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004\",\"dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x447a21c87433c0f11252912313a96f3454629ef88cca7a4eefbb283b3ec409f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d35750fb5ced798b82b8ab085eb5f71529b0d4f72152d182b5bebdc770b20d\",\"dweb:/ipfs/QmUqmyzRZxaLvSXig87HFZgiUxv9ivc2VqfAbxEw7rx32d\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol\":{\"keccak256\":\"0xb11d1ade7146ac3da122e1f387ea82b0bd385d50823946c3f967dbffef3e9f4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a5fc67f024fd2d261543c52a33a2a90b96d2ea1867829e8e12fe6b89b53aee1\",\"dweb:/ipfs/QmPc3ryH7Yv4FoY14CGbaXuQVQ7iu2yrxVAtmbGrN7bscf\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol\":{\"keccak256\":\"0xe3deb5f3b0c9d12944f62ab680f041bbf1910d9d3ac6b545b4b8e399643c538d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f5bc920c2f9859b02dce02d7d0211608398287c643d42ad048555c9b204dc8\",\"dweb:/ipfs/QmSu2MFkCSPNG6pRsXxMai7Do7EDqLwpnnHVDB7q2wHJnr\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0x9bc4d7eb03c4e87fd5122e03cdff5f60fa360d76925980ad022b2c6fac9876f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c6d7cfaac6b54599068126b75474c86ccbbaf386c3581abf82d9cda21b35c81\",\"dweb:/ipfs/QmPZteoCvkiUgv4TZxv2wiEKR5KqM83UCohHnSGw1RytpM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/LiquiditeamNftV2.sol\":{\"keccak256\":\"0x3a84db7f93941b7a481f2cd124b7cbbb0327a90f5f52d795656baba98766ea62\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cc38ac0bb6b9e87062db231f5f3e6884610efc5b37a869ebb2ef7e5f378e968\",\"dweb:/ipfs/QmV9cf19j5wwwKHHmdjhW5sjNXGc5i71z1tAEQsJZpDKcf\"]}},\"version\":1}"
        }
      }
    },
    "sources": {
      "@openzeppelin/contracts/access/AccessControl.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
          "exportedSymbols": {
            "AccessControl": [
              319
            ],
            "Context": [
              2661
            ],
            "ERC165": [
              3472
            ],
            "IAccessControl": [
              392
            ],
            "IERC165": [
              3484
            ],
            "Strings": [
              2887
            ]
          },
          "id": 320,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "108:23:0"
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol",
              "file": "./IAccessControl.sol",
              "id": 2,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 320,
              "sourceUnit": 393,
              "src": "133:30:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 3,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 320,
              "sourceUnit": 2662,
              "src": "164:30:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "../utils/Strings.sol",
              "id": 4,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 320,
              "sourceUnit": 2888,
              "src": "195:30:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "../utils/introspection/ERC165.sol",
              "id": 5,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 320,
              "sourceUnit": 3473,
              "src": "226:43:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2661,
                    "src": "1841:7:0"
                  },
                  "id": 8,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1841:7:0"
                },
                {
                  "baseName": {
                    "id": 9,
                    "name": "IAccessControl",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 392,
                    "src": "1850:14:0"
                  },
                  "id": 10,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1850:14:0"
                },
                {
                  "baseName": {
                    "id": 11,
                    "name": "ERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3472,
                    "src": "1866:6:0"
                  },
                  "id": 12,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1866:6:0"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 6,
                "nodeType": "StructuredDocumentation",
                "src": "271:1534:0",
                "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."
              },
              "fullyImplemented": true,
              "id": 319,
              "linearizedBaseContracts": [
                319,
                3472,
                3484,
                392,
                2661
              ],
              "name": "AccessControl",
              "nameLocation": "1824:13:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "AccessControl.RoleData",
                  "id": 19,
                  "members": [
                    {
                      "constant": false,
                      "id": 16,
                      "mutability": "mutable",
                      "name": "members",
                      "nameLocation": "1930:7:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 19,
                      "src": "1905:32:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "typeName": {
                        "id": 15,
                        "keyType": {
                          "id": 13,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1913:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "1905:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        },
                        "valueType": {
                          "id": 14,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1924:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18,
                      "mutability": "mutable",
                      "name": "adminRole",
                      "nameLocation": "1955:9:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 19,
                      "src": "1947:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 17,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1947:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RoleData",
                  "nameLocation": "1886:8:0",
                  "nodeType": "StructDefinition",
                  "scope": 319,
                  "src": "1879:92:0",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "_roles",
                  "nameLocation": "2014:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 319,
                  "src": "1977:43:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                    "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
                  },
                  "typeName": {
                    "id": 23,
                    "keyType": {
                      "id": 20,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1985:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1977:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                      "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
                    },
                    "valueType": {
                      "id": 22,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 21,
                        "name": "RoleData",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19,
                        "src": "1996:8:0"
                      },
                      "referencedDeclaration": 19,
                      "src": "1996:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RoleData_$19_storage_ptr",
                        "typeString": "struct AccessControl.RoleData"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "functionSelector": "a217fddf",
                  "id": 27,
                  "mutability": "constant",
                  "name": "DEFAULT_ADMIN_ROLE",
                  "nameLocation": "2051:18:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 319,
                  "src": "2027:49:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2027:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "30783030",
                    "id": 26,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2072:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0x00"
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 37,
                    "nodeType": "Block",
                    "src": "2495:44:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 33,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30,
                              "src": "2516:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 32,
                            "name": "_checkRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              92,
                              135
                            ],
                            "referencedDeclaration": 92,
                            "src": "2505:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32) view"
                            }
                          },
                          "id": 34,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2505:16:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35,
                        "nodeType": "ExpressionStatement",
                        "src": "2505:16:0"
                      },
                      {
                        "id": 36,
                        "nodeType": "PlaceholderStatement",
                        "src": "2531:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 28,
                    "nodeType": "StructuredDocumentation",
                    "src": "2083:375:0",
                    "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with a standardized message including the required role.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n _Available since v4.1._"
                  },
                  "id": 38,
                  "name": "onlyRole",
                  "nameLocation": "2472:8:0",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 31,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2489:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 38,
                        "src": "2481:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 29,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2481:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2480:14:0"
                  },
                  "src": "2463:76:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3471
                  ],
                  "body": {
                    "id": 59,
                    "nodeType": "Block",
                    "src": "2697:111:0",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 57,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 47,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "2714:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 49,
                                    "name": "IAccessControl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 392,
                                    "src": "2734:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAccessControl_$392_$",
                                      "typeString": "type(contract IAccessControl)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IAccessControl_$392_$",
                                      "typeString": "type(contract IAccessControl)"
                                    }
                                  ],
                                  "id": 48,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2729:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 50,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2729:20:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$392",
                                  "typeString": "type(contract IAccessControl)"
                                }
                              },
                              "id": 51,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2729:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2714:47:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 55,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41,
                                "src": "2789:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 53,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2765:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_AccessControl_$319_$",
                                  "typeString": "type(contract super AccessControl)"
                                }
                              },
                              "id": 54,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3471,
                              "src": "2765:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 56,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2765:36:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2714:87:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 46,
                        "id": 58,
                        "nodeType": "Return",
                        "src": "2707:94:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 39,
                    "nodeType": "StructuredDocumentation",
                    "src": "2545:56:0",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 60,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "2615:17:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 43,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2673:8:0"
                  },
                  "parameters": {
                    "id": 42,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "2640:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 60,
                        "src": "2633:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 40,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2633:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2632:20:0"
                  },
                  "returnParameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 45,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 60,
                        "src": "2691:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2691:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2690:6:0"
                  },
                  "scope": 319,
                  "src": "2606:202:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    359
                  ],
                  "body": {
                    "id": 78,
                    "nodeType": "Block",
                    "src": "2987:53:0",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 71,
                                "name": "_roles",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24,
                                "src": "3004:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                                  "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                }
                              },
                              "id": 73,
                              "indexExpression": {
                                "id": 72,
                                "name": "role",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 63,
                                "src": "3011:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3004:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RoleData_$19_storage",
                                "typeString": "struct AccessControl.RoleData storage ref"
                              }
                            },
                            "id": 74,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "members",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16,
                            "src": "3004:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 76,
                          "indexExpression": {
                            "id": 75,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65,
                            "src": "3025:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3004:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 70,
                        "id": 77,
                        "nodeType": "Return",
                        "src": "2997:36:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 61,
                    "nodeType": "StructuredDocumentation",
                    "src": "2814:76:0",
                    "text": " @dev Returns `true` if `account` has been granted `role`."
                  },
                  "functionSelector": "91d14854",
                  "id": 79,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasRole",
                  "nameLocation": "2904:7:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 67,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2963:8:0"
                  },
                  "parameters": {
                    "id": 66,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 63,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2920:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 79,
                        "src": "2912:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 62,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2912:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 65,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2934:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 79,
                        "src": "2926:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 64,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2926:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2911:31:0"
                  },
                  "returnParameters": {
                    "id": 70,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 69,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 79,
                        "src": "2981:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 68,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2980:6:0"
                  },
                  "scope": 319,
                  "src": "2895:145:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 91,
                    "nodeType": "Block",
                    "src": "3390:47:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 86,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 82,
                              "src": "3411:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 87,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2651,
                                "src": "3417:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 88,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3417:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 85,
                            "name": "_checkRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              92,
                              135
                            ],
                            "referencedDeclaration": 135,
                            "src": "3400:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) view"
                            }
                          },
                          "id": 89,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3400:30:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 90,
                        "nodeType": "ExpressionStatement",
                        "src": "3400:30:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 80,
                    "nodeType": "StructuredDocumentation",
                    "src": "3046:283:0",
                    "text": " @dev Revert with a standard message if `_msgSender()` is missing `role`.\n Overriding this function changes the behavior of the {onlyRole} modifier.\n Format of the revert message is described in {_checkRole}.\n _Available since v4.6._"
                  },
                  "id": 92,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkRole",
                  "nameLocation": "3343:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 83,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 82,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "3362:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 92,
                        "src": "3354:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 81,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3354:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3353:14:0"
                  },
                  "returnParameters": {
                    "id": 84,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3390:0:0"
                  },
                  "scope": 319,
                  "src": "3334:103:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 134,
                    "nodeType": "Block",
                    "src": "3791:419:0",
                    "statements": [
                      {
                        "condition": {
                          "id": 104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3805:23:0",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 101,
                                "name": "role",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 95,
                                "src": "3814:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 102,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "3820:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 100,
                              "name": "hasRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 79,
                              "src": "3806:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) view returns (bool)"
                              }
                            },
                            "id": 103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3806:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 133,
                        "nodeType": "IfStatement",
                        "src": "3801:403:0",
                        "trueBody": {
                          "id": 132,
                          "nodeType": "Block",
                          "src": "3830:374:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
                                            "id": 110,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3938:25:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
                                              "typeString": "literal_string \"AccessControl: account \""
                                            },
                                            "value": "AccessControl: account "
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 115,
                                                    "name": "account",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 97,
                                                    "src": "4017:7:0",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 114,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "4009:7:0",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                    "typeString": "type(uint160)"
                                                  },
                                                  "typeName": {
                                                    "id": 113,
                                                    "name": "uint160",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4009:7:0",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 116,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4009:16:0",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint160",
                                                  "typeString": "uint160"
                                                }
                                              },
                                              {
                                                "hexValue": "3230",
                                                "id": 117,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4027:2:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_20_by_1",
                                                  "typeString": "int_const 20"
                                                },
                                                "value": "20"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint160",
                                                  "typeString": "uint160"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_20_by_1",
                                                  "typeString": "int_const 20"
                                                }
                                              ],
                                              "expression": {
                                                "id": 111,
                                                "name": "Strings",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2887,
                                                "src": "3989:7:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Strings_$2887_$",
                                                  "typeString": "type(library Strings)"
                                                }
                                              },
                                              "id": 112,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "toHexString",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2866,
                                              "src": "3989:19:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                                "typeString": "function (uint256,uint256) pure returns (string memory)"
                                              }
                                            },
                                            "id": 118,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3989:41:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          },
                                          {
                                            "hexValue": "206973206d697373696e6720726f6c6520",
                                            "id": 119,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4056:19:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
                                              "typeString": "literal_string \" is missing role \""
                                            },
                                            "value": " is missing role "
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 124,
                                                    "name": "role",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 95,
                                                    "src": "4129:4:0",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  ],
                                                  "id": 123,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "4121:7:0",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                    "typeString": "type(uint256)"
                                                  },
                                                  "typeName": {
                                                    "id": 122,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4121:7:0",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 125,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4121:13:0",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "hexValue": "3332",
                                                "id": 126,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4136:2:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_32_by_1",
                                                  "typeString": "int_const 32"
                                                },
                                                "value": "32"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_32_by_1",
                                                  "typeString": "int_const 32"
                                                }
                                              ],
                                              "expression": {
                                                "id": 120,
                                                "name": "Strings",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2887,
                                                "src": "4101:7:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Strings_$2887_$",
                                                  "typeString": "type(library Strings)"
                                                }
                                              },
                                              "id": 121,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "toHexString",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2866,
                                              "src": "4101:19:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                                "typeString": "function (uint256,uint256) pure returns (string memory)"
                                              }
                                            },
                                            "id": 127,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4101:38:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
                                              "typeString": "literal_string \"AccessControl: account \""
                                            },
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
                                              "typeString": "literal_string \" is missing role \""
                                            },
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "expression": {
                                            "id": 108,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -1,
                                            "src": "3896:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 109,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "src": "3896:16:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 128,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3896:265:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3868:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                        "typeString": "type(string storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 106,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3868:6:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3868:311:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 105,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -19,
                                    -19
                                  ],
                                  "referencedDeclaration": -19,
                                  "src": "3844:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3844:349:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 131,
                              "nodeType": "ExpressionStatement",
                              "src": "3844:349:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 93,
                    "nodeType": "StructuredDocumentation",
                    "src": "3443:270:0",
                    "text": " @dev Revert with a standard message if `account` is missing `role`.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/"
                  },
                  "id": 135,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkRole",
                  "nameLocation": "3727:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 98,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 95,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "3746:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 135,
                        "src": "3738:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 94,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3738:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 97,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3760:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 135,
                        "src": "3752:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 96,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3752:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3737:31:0"
                  },
                  "returnParameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3791:0:0"
                  },
                  "scope": 319,
                  "src": "3718:492:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    367
                  ],
                  "body": {
                    "id": 149,
                    "nodeType": "Block",
                    "src": "4474:46:0",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "baseExpression": {
                              "id": 144,
                              "name": "_roles",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24,
                              "src": "4491:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                                "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                              }
                            },
                            "id": 146,
                            "indexExpression": {
                              "id": 145,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "4498:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4491:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoleData_$19_storage",
                              "typeString": "struct AccessControl.RoleData storage ref"
                            }
                          },
                          "id": 147,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "adminRole",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18,
                          "src": "4491:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 143,
                        "id": 148,
                        "nodeType": "Return",
                        "src": "4484:29:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 136,
                    "nodeType": "StructuredDocumentation",
                    "src": "4216:170:0",
                    "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."
                  },
                  "functionSelector": "248a9ca3",
                  "id": 150,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRoleAdmin",
                  "nameLocation": "4400:12:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 140,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4447:8:0"
                  },
                  "parameters": {
                    "id": 139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 138,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "4421:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 150,
                        "src": "4413:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 137,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4413:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4412:14:0"
                  },
                  "returnParameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 142,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 150,
                        "src": "4465:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 141,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4465:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4464:9:0"
                  },
                  "scope": 319,
                  "src": "4391:129:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    375
                  ],
                  "body": {
                    "id": 169,
                    "nodeType": "Block",
                    "src": "4919:42:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 165,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 153,
                              "src": "4940:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 166,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 155,
                              "src": "4946:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 164,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "4929:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4929:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 168,
                        "nodeType": "ExpressionStatement",
                        "src": "4929:25:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 151,
                    "nodeType": "StructuredDocumentation",
                    "src": "4526:285:0",
                    "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."
                  },
                  "functionSelector": "2f2ff15d",
                  "id": 170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 160,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 153,
                              "src": "4912:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 159,
                            "name": "getRoleAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "4899:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4899:18:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 162,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 158,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "4890:8:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4890:28:0"
                    }
                  ],
                  "name": "grantRole",
                  "nameLocation": "4825:9:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 157,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4881:8:0"
                  },
                  "parameters": {
                    "id": 156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 153,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "4843:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 170,
                        "src": "4835:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 152,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4835:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 155,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4857:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 170,
                        "src": "4849:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4849:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4834:31:0"
                  },
                  "returnParameters": {
                    "id": 163,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4919:0:0"
                  },
                  "scope": 319,
                  "src": "4816:145:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    383
                  ],
                  "body": {
                    "id": 189,
                    "nodeType": "Block",
                    "src": "5345:43:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 185,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "5367:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 186,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 175,
                              "src": "5373:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 184,
                            "name": "_revokeRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 318,
                            "src": "5355:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5355:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 188,
                        "nodeType": "ExpressionStatement",
                        "src": "5355:26:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 171,
                    "nodeType": "StructuredDocumentation",
                    "src": "4967:269:0",
                    "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."
                  },
                  "functionSelector": "d547741f",
                  "id": 190,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 180,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "5338:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 179,
                            "name": "getRoleAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "5325:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5325:18:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 182,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 178,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "5316:8:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5316:28:0"
                    }
                  ],
                  "name": "revokeRole",
                  "nameLocation": "5250:10:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 177,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5307:8:0"
                  },
                  "parameters": {
                    "id": 176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 173,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "5269:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 190,
                        "src": "5261:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 172,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5261:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 175,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "5283:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 190,
                        "src": "5275:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 174,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5275:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5260:31:0"
                  },
                  "returnParameters": {
                    "id": 183,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5345:0:0"
                  },
                  "scope": 319,
                  "src": "5241:147:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    391
                  ],
                  "body": {
                    "id": 212,
                    "nodeType": "Block",
                    "src": "6002:137:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 200,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "6020:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 201,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2651,
                                  "src": "6031:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6031:12:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6020:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66",
                              "id": 204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6045:49:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
                                "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
                              },
                              "value": "AccessControl: can only renounce roles for self"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
                                "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
                              }
                            ],
                            "id": 199,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6012:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6012:83:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 206,
                        "nodeType": "ExpressionStatement",
                        "src": "6012:83:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 208,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 193,
                              "src": "6118:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 209,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 195,
                              "src": "6124:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 207,
                            "name": "_revokeRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 318,
                            "src": "6106:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6106:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 211,
                        "nodeType": "ExpressionStatement",
                        "src": "6106:26:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 191,
                    "nodeType": "StructuredDocumentation",
                    "src": "5394:526:0",
                    "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`.\n May emit a {RoleRevoked} event."
                  },
                  "functionSelector": "36568abe",
                  "id": 213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renounceRole",
                  "nameLocation": "5934:12:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 197,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5993:8:0"
                  },
                  "parameters": {
                    "id": 196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 193,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "5955:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 213,
                        "src": "5947:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 192,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5947:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 195,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "5969:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 213,
                        "src": "5961:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 194,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5961:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5946:31:0"
                  },
                  "returnParameters": {
                    "id": 198,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6002:0:0"
                  },
                  "scope": 319,
                  "src": "5925:214:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 226,
                    "nodeType": "Block",
                    "src": "6892:42:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 222,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 216,
                              "src": "6913:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 223,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 218,
                              "src": "6919:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 221,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "6902:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6902:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 225,
                        "nodeType": "ExpressionStatement",
                        "src": "6902:25:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 214,
                    "nodeType": "StructuredDocumentation",
                    "src": "6145:674:0",
                    "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n May emit a {RoleGranted} event.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====\n NOTE: This function is deprecated in favor of {_grantRole}."
                  },
                  "id": 227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setupRole",
                  "nameLocation": "6833:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 216,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "6852:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 227,
                        "src": "6844:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 215,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6844:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 218,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "6866:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 227,
                        "src": "6858:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6858:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6843:31:0"
                  },
                  "returnParameters": {
                    "id": 220,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6892:0:0"
                  },
                  "scope": 319,
                  "src": "6824:110:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 254,
                    "nodeType": "Block",
                    "src": "7132:174:0",
                    "statements": [
                      {
                        "assignments": [
                          236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 236,
                            "mutability": "mutable",
                            "name": "previousAdminRole",
                            "nameLocation": "7150:17:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 254,
                            "src": "7142:25:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 235,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7142:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 240,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 238,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 230,
                              "src": "7183:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 237,
                            "name": "getRoleAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "7170:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7170:18:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7142:46:0"
                      },
                      {
                        "expression": {
                          "id": 246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 241,
                                "name": "_roles",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24,
                                "src": "7198:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                                  "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                }
                              },
                              "id": 243,
                              "indexExpression": {
                                "id": 242,
                                "name": "role",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 230,
                                "src": "7205:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7198:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RoleData_$19_storage",
                                "typeString": "struct AccessControl.RoleData storage ref"
                              }
                            },
                            "id": 244,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "adminRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18,
                            "src": "7198:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 245,
                            "name": "adminRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 232,
                            "src": "7223:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7198:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 247,
                        "nodeType": "ExpressionStatement",
                        "src": "7198:34:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 249,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 230,
                              "src": "7264:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 250,
                              "name": "previousAdminRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 236,
                              "src": "7270:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 251,
                              "name": "adminRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 232,
                              "src": "7289:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 248,
                            "name": "RoleAdminChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 331,
                            "src": "7247:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7247:52:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 253,
                        "nodeType": "EmitStatement",
                        "src": "7242:57:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 228,
                    "nodeType": "StructuredDocumentation",
                    "src": "6940:114:0",
                    "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."
                  },
                  "id": 255,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setRoleAdmin",
                  "nameLocation": "7068:13:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 230,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "7090:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 255,
                        "src": "7082:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 229,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7082:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 232,
                        "mutability": "mutable",
                        "name": "adminRole",
                        "nameLocation": "7104:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 255,
                        "src": "7096:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 231,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7096:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7081:33:0"
                  },
                  "returnParameters": {
                    "id": 234,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7132:0:0"
                  },
                  "scope": 319,
                  "src": "7059:247:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 286,
                    "nodeType": "Block",
                    "src": "7542:165:0",
                    "statements": [
                      {
                        "condition": {
                          "id": 267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "7556:23:0",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 264,
                                "name": "role",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 258,
                                "src": "7565:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 265,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 260,
                                "src": "7571:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 263,
                              "name": "hasRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 79,
                              "src": "7557:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) view returns (bool)"
                              }
                            },
                            "id": 266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7557:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 285,
                        "nodeType": "IfStatement",
                        "src": "7552:149:0",
                        "trueBody": {
                          "id": 284,
                          "nodeType": "Block",
                          "src": "7581:120:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 268,
                                        "name": "_roles",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24,
                                        "src": "7595:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                                          "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                        }
                                      },
                                      "id": 270,
                                      "indexExpression": {
                                        "id": 269,
                                        "name": "role",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 258,
                                        "src": "7602:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7595:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RoleData_$19_storage",
                                        "typeString": "struct AccessControl.RoleData storage ref"
                                      }
                                    },
                                    "id": 271,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "members",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16,
                                    "src": "7595:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 273,
                                  "indexExpression": {
                                    "id": 272,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 260,
                                    "src": "7616:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7595:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7627:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "7595:36:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 276,
                              "nodeType": "ExpressionStatement",
                              "src": "7595:36:0"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 278,
                                    "name": "role",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 258,
                                    "src": "7662:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 279,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 260,
                                    "src": "7668:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 280,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "7677:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7677:12:0",
                                    "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": 277,
                                  "name": "RoleGranted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 340,
                                  "src": "7650:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address,address)"
                                  }
                                },
                                "id": 282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7650:40:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 283,
                              "nodeType": "EmitStatement",
                              "src": "7645:45:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 256,
                    "nodeType": "StructuredDocumentation",
                    "src": "7312:157:0",
                    "text": " @dev Grants `role` to `account`.\n Internal function without access restriction.\n May emit a {RoleGranted} event."
                  },
                  "id": 287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_grantRole",
                  "nameLocation": "7483:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 258,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "7502:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "7494:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 257,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7494:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 260,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7516:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "7508:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7508:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7493:31:0"
                  },
                  "returnParameters": {
                    "id": 262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7542:0:0"
                  },
                  "scope": 319,
                  "src": "7474:233:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 317,
                    "nodeType": "Block",
                    "src": "7947:165:0",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 296,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 290,
                              "src": "7969:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 297,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 292,
                              "src": "7975:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 295,
                            "name": "hasRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 79,
                            "src": "7961:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (bytes32,address) view returns (bool)"
                            }
                          },
                          "id": 298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7961:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 316,
                        "nodeType": "IfStatement",
                        "src": "7957:149:0",
                        "trueBody": {
                          "id": 315,
                          "nodeType": "Block",
                          "src": "7985:121:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 299,
                                        "name": "_roles",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24,
                                        "src": "7999:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$",
                                          "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                        }
                                      },
                                      "id": 301,
                                      "indexExpression": {
                                        "id": 300,
                                        "name": "role",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 290,
                                        "src": "8006:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7999:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RoleData_$19_storage",
                                        "typeString": "struct AccessControl.RoleData storage ref"
                                      }
                                    },
                                    "id": 302,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "members",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16,
                                    "src": "7999:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 304,
                                  "indexExpression": {
                                    "id": 303,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 292,
                                    "src": "8020:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7999:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8031:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "7999:37:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 307,
                              "nodeType": "ExpressionStatement",
                              "src": "7999:37:0"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 309,
                                    "name": "role",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 290,
                                    "src": "8067:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 310,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 292,
                                    "src": "8073:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 311,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "8082:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8082:12:0",
                                    "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": 308,
                                  "name": "RoleRevoked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 349,
                                  "src": "8055:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address,address)"
                                  }
                                },
                                "id": 313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8055:40:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 314,
                              "nodeType": "EmitStatement",
                              "src": "8050:45:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 288,
                    "nodeType": "StructuredDocumentation",
                    "src": "7713:160:0",
                    "text": " @dev Revokes `role` from `account`.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."
                  },
                  "id": 318,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revokeRole",
                  "nameLocation": "7887:11:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 290,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "7907:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 318,
                        "src": "7899:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 289,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7899:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 292,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7921:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 318,
                        "src": "7913:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7913:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7898:31:0"
                  },
                  "returnParameters": {
                    "id": 294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7947:0:0"
                  },
                  "scope": 319,
                  "src": "7878:234:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 320,
              "src": "1806:6308:0",
              "usedErrors": []
            }
          ],
          "src": "108:8007:0"
        },
        "id": 0
      },
      "@openzeppelin/contracts/access/IAccessControl.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol",
          "exportedSymbols": {
            "IAccessControl": [
              392
            ]
          },
          "id": 393,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 321,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "94:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 322,
                "nodeType": "StructuredDocumentation",
                "src": "119:89:1",
                "text": " @dev External interface of AccessControl declared to support ERC165 detection."
              },
              "fullyImplemented": false,
              "id": 392,
              "linearizedBaseContracts": [
                392
              ],
              "name": "IAccessControl",
              "nameLocation": "219:14:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 323,
                    "nodeType": "StructuredDocumentation",
                    "src": "240:292:1",
                    "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"
                  },
                  "id": 331,
                  "name": "RoleAdminChanged",
                  "nameLocation": "543:16:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 325,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "576:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 331,
                        "src": "560:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 324,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "560:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 327,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousAdminRole",
                        "nameLocation": "598:17:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 331,
                        "src": "582:33:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 326,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "582:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 329,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAdminRole",
                        "nameLocation": "633:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 331,
                        "src": "617:28:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 328,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "559:87:1"
                  },
                  "src": "537:110:1"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 332,
                    "nodeType": "StructuredDocumentation",
                    "src": "653:212:1",
                    "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."
                  },
                  "id": 340,
                  "name": "RoleGranted",
                  "nameLocation": "876:11:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 334,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "904:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 340,
                        "src": "888:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 333,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "888:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 336,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "926:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 340,
                        "src": "910:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 338,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "951:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 340,
                        "src": "935:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 337,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "935:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "887:71:1"
                  },
                  "src": "870:89:1"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 341,
                    "nodeType": "StructuredDocumentation",
                    "src": "965:275:1",
                    "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"
                  },
                  "id": 349,
                  "name": "RoleRevoked",
                  "nameLocation": "1251:11:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 343,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "1279:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1263:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 342,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1263:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 345,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1301:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1285:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1285:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 347,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "1326:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "1310:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1310:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1262:71:1"
                  },
                  "src": "1245:89:1"
                },
                {
                  "documentation": {
                    "id": 350,
                    "nodeType": "StructuredDocumentation",
                    "src": "1340:76:1",
                    "text": " @dev Returns `true` if `account` has been granted `role`."
                  },
                  "functionSelector": "91d14854",
                  "id": 359,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasRole",
                  "nameLocation": "1430:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 352,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "1446:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 359,
                        "src": "1438:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 351,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1438:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1460:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 359,
                        "src": "1452:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1452:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1437:31:1"
                  },
                  "returnParameters": {
                    "id": 358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 357,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 359,
                        "src": "1492:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 356,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1491:6:1"
                  },
                  "scope": 392,
                  "src": "1421:77:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 360,
                    "nodeType": "StructuredDocumentation",
                    "src": "1504:184:1",
                    "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."
                  },
                  "functionSelector": "248a9ca3",
                  "id": 367,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRoleAdmin",
                  "nameLocation": "1702:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 363,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 362,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "1723:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 367,
                        "src": "1715:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 361,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1715:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1714:14:1"
                  },
                  "returnParameters": {
                    "id": 366,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 365,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 367,
                        "src": "1752:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 364,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1752:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1751:9:1"
                  },
                  "scope": 392,
                  "src": "1693:68:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 368,
                    "nodeType": "StructuredDocumentation",
                    "src": "1767:239:1",
                    "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."
                  },
                  "functionSelector": "2f2ff15d",
                  "id": 375,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "grantRole",
                  "nameLocation": "2020:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 370,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2038:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 375,
                        "src": "2030:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 369,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2030:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 372,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2052:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 375,
                        "src": "2044:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2044:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2029:31:1"
                  },
                  "returnParameters": {
                    "id": 374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2069:0:1"
                  },
                  "scope": 392,
                  "src": "2011:59:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 376,
                    "nodeType": "StructuredDocumentation",
                    "src": "2076:223:1",
                    "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."
                  },
                  "functionSelector": "d547741f",
                  "id": 383,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeRole",
                  "nameLocation": "2313:10:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 378,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2332:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 383,
                        "src": "2324:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 377,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2324:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 380,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2346:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 383,
                        "src": "2338:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2338:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2323:31:1"
                  },
                  "returnParameters": {
                    "id": 382,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2363:0:1"
                  },
                  "scope": 392,
                  "src": "2304:60:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 384,
                    "nodeType": "StructuredDocumentation",
                    "src": "2370:480:1",
                    "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."
                  },
                  "functionSelector": "36568abe",
                  "id": 391,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renounceRole",
                  "nameLocation": "2864:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 386,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2885:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 391,
                        "src": "2877:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 385,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2877:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 388,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2899:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 391,
                        "src": "2891:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2891:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2876:31:1"
                  },
                  "returnParameters": {
                    "id": 390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2916:0:1"
                  },
                  "scope": 392,
                  "src": "2855:62:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 393,
              "src": "209:2710:1",
              "usedErrors": []
            }
          ],
          "src": "94:2826:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts/interfaces/IERC2981.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/IERC2981.sol",
          "exportedSymbols": {
            "IERC165": [
              3484
            ],
            "IERC2981": [
              411
            ]
          },
          "id": 412,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 394,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:2"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../utils/introspection/IERC165.sol",
              "id": 395,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 412,
              "sourceUnit": 3485,
              "src": "132:44:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 397,
                    "name": "IERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3484,
                    "src": "490:7:2"
                  },
                  "id": 398,
                  "nodeType": "InheritanceSpecifier",
                  "src": "490:7:2"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 396,
                "nodeType": "StructuredDocumentation",
                "src": "178:289:2",
                "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": 411,
              "linearizedBaseContracts": [
                411,
                3484
              ],
              "name": "IERC2981",
              "nameLocation": "478:8:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 399,
                    "nodeType": "StructuredDocumentation",
                    "src": "504:231:2",
                    "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": 410,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "749:11:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 401,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "769:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "761:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 400,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 403,
                        "mutability": "mutable",
                        "name": "salePrice",
                        "nameLocation": "786:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "778:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 402,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "778:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "760:36:2"
                  },
                  "returnParameters": {
                    "id": 409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 406,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "852:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "844:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 408,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "870:13:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 410,
                        "src": "862:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:41:2"
                  },
                  "scope": 411,
                  "src": "740:145:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 412,
              "src": "468:419:2",
              "usedErrors": []
            }
          ],
          "src": "107:781:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts/security/Pausable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
          "exportedSymbols": {
            "Context": [
              2661
            ],
            "Pausable": [
              519
            ]
          },
          "id": 520,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 413,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:23:3"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 414,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 520,
              "sourceUnit": 2662,
              "src": "130:30:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 416,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2661,
                    "src": "632:7:3"
                  },
                  "id": 417,
                  "nodeType": "InheritanceSpecifier",
                  "src": "632:7:3"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 415,
                "nodeType": "StructuredDocumentation",
                "src": "162:439:3",
                "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."
              },
              "fullyImplemented": true,
              "id": 519,
              "linearizedBaseContracts": [
                519,
                2661
              ],
              "name": "Pausable",
              "nameLocation": "620:8:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 418,
                    "nodeType": "StructuredDocumentation",
                    "src": "646:73:3",
                    "text": " @dev Emitted when the pause is triggered by `account`."
                  },
                  "id": 422,
                  "name": "Paused",
                  "nameLocation": "730:6:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 420,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "745:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 422,
                        "src": "737:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 419,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "736:17:3"
                  },
                  "src": "724:30:3"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 423,
                    "nodeType": "StructuredDocumentation",
                    "src": "760:70:3",
                    "text": " @dev Emitted when the pause is lifted by `account`."
                  },
                  "id": 427,
                  "name": "Unpaused",
                  "nameLocation": "841:8:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 425,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "858:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 427,
                        "src": "850:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 424,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "850:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "849:17:3"
                  },
                  "src": "835:32:3"
                },
                {
                  "constant": false,
                  "id": 429,
                  "mutability": "mutable",
                  "name": "_paused",
                  "nameLocation": "886:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 519,
                  "src": "873:20:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 428,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "873:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 437,
                    "nodeType": "Block",
                    "src": "986:32:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 433,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 429,
                            "src": "996:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1006:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "996:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 436,
                        "nodeType": "ExpressionStatement",
                        "src": "996:15:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 430,
                    "nodeType": "StructuredDocumentation",
                    "src": "900:67:3",
                    "text": " @dev Initializes the contract in unpaused state."
                  },
                  "id": 438,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "983:2:3"
                  },
                  "returnParameters": {
                    "id": 432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "986:0:3"
                  },
                  "scope": 519,
                  "src": "972:46:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 445,
                    "nodeType": "Block",
                    "src": "1229:47:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 441,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 475,
                            "src": "1239:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1239:19:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 443,
                        "nodeType": "ExpressionStatement",
                        "src": "1239:19:3"
                      },
                      {
                        "id": 444,
                        "nodeType": "PlaceholderStatement",
                        "src": "1268:1:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 439,
                    "nodeType": "StructuredDocumentation",
                    "src": "1024:175:3",
                    "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 446,
                  "name": "whenNotPaused",
                  "nameLocation": "1213:13:3",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 440,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1226:2:3"
                  },
                  "src": "1204:72:3",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 453,
                    "nodeType": "Block",
                    "src": "1476:44:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 449,
                            "name": "_requirePaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "1486:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1486:16:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 451,
                        "nodeType": "ExpressionStatement",
                        "src": "1486:16:3"
                      },
                      {
                        "id": 452,
                        "nodeType": "PlaceholderStatement",
                        "src": "1512:1:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 447,
                    "nodeType": "StructuredDocumentation",
                    "src": "1282:167:3",
                    "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 454,
                  "name": "whenPaused",
                  "nameLocation": "1463:10:3",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 448,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1473:2:3"
                  },
                  "src": "1454:66:3",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 462,
                    "nodeType": "Block",
                    "src": "1668:31:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 460,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 429,
                          "src": "1685:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 459,
                        "id": 461,
                        "nodeType": "Return",
                        "src": "1678:14:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 455,
                    "nodeType": "StructuredDocumentation",
                    "src": "1526:84:3",
                    "text": " @dev Returns true if the contract is paused, and false otherwise."
                  },
                  "functionSelector": "5c975abb",
                  "id": 463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "paused",
                  "nameLocation": "1624:6:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1630:2:3"
                  },
                  "returnParameters": {
                    "id": 459,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 458,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 463,
                        "src": "1662:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 457,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1662:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1661:6:3"
                  },
                  "scope": 519,
                  "src": "1615:84:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 474,
                    "nodeType": "Block",
                    "src": "1818:55:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1836:9:3",
                              "subExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 468,
                                  "name": "paused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "1837:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1837:8:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a20706175736564",
                              "id": 471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1847:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              },
                              "value": "Pausable: paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              }
                            ],
                            "id": 467,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1828:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1828:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 473,
                        "nodeType": "ExpressionStatement",
                        "src": "1828:38:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 464,
                    "nodeType": "StructuredDocumentation",
                    "src": "1705:57:3",
                    "text": " @dev Throws if the contract is paused."
                  },
                  "id": 475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireNotPaused",
                  "nameLocation": "1776:17:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1793:2:3"
                  },
                  "returnParameters": {
                    "id": 466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1818:0:3"
                  },
                  "scope": 519,
                  "src": "1767:106:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 485,
                    "nodeType": "Block",
                    "src": "1993:58:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 480,
                                "name": "paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "2011:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                  "typeString": "function () view returns (bool)"
                                }
                              },
                              "id": 481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2011:8:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a206e6f7420706175736564",
                              "id": 482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2021:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              },
                              "value": "Pausable: not paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              }
                            ],
                            "id": 479,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2003:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2003:41:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 484,
                        "nodeType": "ExpressionStatement",
                        "src": "2003:41:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 476,
                    "nodeType": "StructuredDocumentation",
                    "src": "1879:61:3",
                    "text": " @dev Throws if the contract is not paused."
                  },
                  "id": 486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requirePaused",
                  "nameLocation": "1954:14:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1968:2:3"
                  },
                  "returnParameters": {
                    "id": 478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1993:0:3"
                  },
                  "scope": 519,
                  "src": "1945:106:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 501,
                    "nodeType": "Block",
                    "src": "2235:66:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 492,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 429,
                            "src": "2245:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2255:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2245:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 495,
                        "nodeType": "ExpressionStatement",
                        "src": "2245:14:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 497,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2651,
                                "src": "2281:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2281:12:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 496,
                            "name": "Paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 422,
                            "src": "2274:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2274:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 500,
                        "nodeType": "EmitStatement",
                        "src": "2269:25:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 487,
                    "nodeType": "StructuredDocumentation",
                    "src": "2057:124:3",
                    "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 490,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 489,
                        "name": "whenNotPaused",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 446,
                        "src": "2221:13:3"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2221:13:3"
                    }
                  ],
                  "name": "_pause",
                  "nameLocation": "2195:6:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 488,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2201:2:3"
                  },
                  "returnParameters": {
                    "id": 491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2235:0:3"
                  },
                  "scope": 519,
                  "src": "2186:115:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 517,
                    "nodeType": "Block",
                    "src": "2481:69:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 508,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 429,
                            "src": "2491:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2501:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2491:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 511,
                        "nodeType": "ExpressionStatement",
                        "src": "2491:15:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 513,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2651,
                                "src": "2530:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2530:12:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 512,
                            "name": "Unpaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 427,
                            "src": "2521:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2521:22:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 516,
                        "nodeType": "EmitStatement",
                        "src": "2516:27:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 503,
                    "nodeType": "StructuredDocumentation",
                    "src": "2307:121:3",
                    "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 518,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 506,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 505,
                        "name": "whenPaused",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 454,
                        "src": "2470:10:3"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2470:10:3"
                    }
                  ],
                  "name": "_unpause",
                  "nameLocation": "2442:8:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 504,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2450:2:3"
                  },
                  "returnParameters": {
                    "id": 507,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2481:0:3"
                  },
                  "scope": 519,
                  "src": "2433:117:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 520,
              "src": "602:1950:3",
              "usedErrors": []
            }
          ],
          "src": "105:2448:3"
        },
        "id": 3
      },
      "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
          "exportedSymbols": {
            "Address": [
              2639
            ],
            "Context": [
              2661
            ],
            "ERC1155": [
              1742
            ],
            "ERC165": [
              3472
            ],
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 1743,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 521,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "109:23:4"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "./IERC1155.sol",
              "id": 522,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 1865,
              "src": "134:24:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
              "file": "./IERC1155Receiver.sol",
              "id": 523,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 1906,
              "src": "159:32:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
              "file": "./extensions/IERC1155MetadataURI.sol",
              "id": 524,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 2147,
              "src": "192:46:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 525,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 2640,
              "src": "239:33:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 526,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 2662,
              "src": "273:33:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "../../utils/introspection/ERC165.sol",
              "id": 527,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1743,
              "sourceUnit": 3473,
              "src": "307:46:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 529,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2661,
                    "src": "590:7:4"
                  },
                  "id": 530,
                  "nodeType": "InheritanceSpecifier",
                  "src": "590:7:4"
                },
                {
                  "baseName": {
                    "id": 531,
                    "name": "ERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3472,
                    "src": "599:6:4"
                  },
                  "id": 532,
                  "nodeType": "InheritanceSpecifier",
                  "src": "599:6:4"
                },
                {
                  "baseName": {
                    "id": 533,
                    "name": "IERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1864,
                    "src": "607:8:4"
                  },
                  "id": 534,
                  "nodeType": "InheritanceSpecifier",
                  "src": "607:8:4"
                },
                {
                  "baseName": {
                    "id": 535,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2146,
                    "src": "617:19:4"
                  },
                  "id": 536,
                  "nodeType": "InheritanceSpecifier",
                  "src": "617:19:4"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 528,
                "nodeType": "StructuredDocumentation",
                "src": "355:214:4",
                "text": " @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"
              },
              "fullyImplemented": true,
              "id": 1742,
              "linearizedBaseContracts": [
                1742,
                2146,
                1864,
                3472,
                3484,
                2661
              ],
              "name": "ERC1155",
              "nameLocation": "579:7:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 539,
                  "libraryName": {
                    "id": 537,
                    "name": "Address",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2639,
                    "src": "649:7:4"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "643:26:4",
                  "typeName": {
                    "id": 538,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "661:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 545,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "780:9:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1742,
                  "src": "724:65:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 544,
                    "keyType": {
                      "id": 540,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "732:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "724:47:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 543,
                      "keyType": {
                        "id": 541,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "751:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "743:27:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 542,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "762:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 551,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "899:18:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1742,
                  "src": "846:71:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 550,
                    "keyType": {
                      "id": 546,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "854:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "846:44:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 549,
                      "keyType": {
                        "id": 547,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "873:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "865:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 548,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "884:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 553,
                  "mutability": "mutable",
                  "name": "_uri",
                  "nameLocation": "1053:4:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1742,
                  "src": "1038:19:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 552,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1038:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 563,
                    "nodeType": "Block",
                    "src": "1139:30:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 560,
                              "name": "uri_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 556,
                              "src": "1157:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 559,
                            "name": "_setURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "1149:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1149:13:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 562,
                        "nodeType": "ExpressionStatement",
                        "src": "1149:13:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 554,
                    "nodeType": "StructuredDocumentation",
                    "src": "1064:38:4",
                    "text": " @dev See {_setURI}."
                  },
                  "id": 564,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 556,
                        "mutability": "mutable",
                        "name": "uri_",
                        "nameLocation": "1133:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 564,
                        "src": "1119:18:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 555,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1119:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1118:20:4"
                  },
                  "returnParameters": {
                    "id": 558,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1139:0:4"
                  },
                  "scope": 1742,
                  "src": "1107:62:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3471,
                    3483
                  ],
                  "body": {
                    "id": 594,
                    "nodeType": "Block",
                    "src": "1344:197:4",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 575,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 567,
                                "src": "1373:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 577,
                                      "name": "IERC1155",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1864,
                                      "src": "1393:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$1864_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$1864_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    ],
                                    "id": 576,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1388:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1388:14:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1864",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                },
                                "id": 579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1388:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1373:41:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 581,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 567,
                                "src": "1430:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 583,
                                      "name": "IERC1155MetadataURI",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2146,
                                      "src": "1450:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$2146_$",
                                        "typeString": "type(contract IERC1155MetadataURI)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$2146_$",
                                        "typeString": "type(contract IERC1155MetadataURI)"
                                      }
                                    ],
                                    "id": 582,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1445:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1445:25:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155MetadataURI_$2146",
                                    "typeString": "type(contract IERC1155MetadataURI)"
                                  }
                                },
                                "id": 585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1445:37:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1430:52:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1373:109:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 590,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 567,
                                "src": "1522:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 588,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1498:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC1155_$1742_$",
                                  "typeString": "type(contract super ERC1155)"
                                }
                              },
                              "id": 589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3471,
                              "src": "1498:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1498:36:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1373:161:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 574,
                        "id": 593,
                        "nodeType": "Return",
                        "src": "1354:180:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 565,
                    "nodeType": "StructuredDocumentation",
                    "src": "1175:56:4",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 595,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1245:17:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 571,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 569,
                        "name": "ERC165",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3472,
                        "src": "1312:6:4"
                      },
                      {
                        "id": 570,
                        "name": "IERC165",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3484,
                        "src": "1320:7:4"
                      }
                    ],
                    "src": "1303:25:4"
                  },
                  "parameters": {
                    "id": 568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 567,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "1270:11:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 595,
                        "src": "1263:18:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 566,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1263:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1262:20:4"
                  },
                  "returnParameters": {
                    "id": 574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 573,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 595,
                        "src": "1338:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 572,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1338:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1337:6:4"
                  },
                  "scope": 1742,
                  "src": "1236:305:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2145
                  ],
                  "body": {
                    "id": 606,
                    "nodeType": "Block",
                    "src": "2015:28:4",
                    "statements": [
                      {
                        "expression": {
                          "id": 604,
                          "name": "_uri",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 553,
                          "src": "2032:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 603,
                        "id": 605,
                        "nodeType": "Return",
                        "src": "2025:11:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 596,
                    "nodeType": "StructuredDocumentation",
                    "src": "1547:388:4",
                    "text": " @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."
                  },
                  "functionSelector": "0e89341c",
                  "id": 607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "1949:3:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 600,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1982:8:4"
                  },
                  "parameters": {
                    "id": 599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 598,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 607,
                        "src": "1953:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1953:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1952:9:4"
                  },
                  "returnParameters": {
                    "id": 603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 602,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 607,
                        "src": "2000:13:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 601,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2000:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1999:15:4"
                  },
                  "scope": 1742,
                  "src": "1940:103:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1802
                  ],
                  "body": {
                    "id": 634,
                    "nodeType": "Block",
                    "src": "2280:132:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 619,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 610,
                                "src": "2298:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2317:1:4",
                                    "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": 621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2309:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 620,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2309:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2309:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2298:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572",
                              "id": 625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2321:44:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad",
                                "typeString": "literal_string \"ERC1155: address zero is not a valid owner\""
                              },
                              "value": "ERC1155: address zero is not a valid owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad",
                                "typeString": "literal_string \"ERC1155: address zero is not a valid owner\""
                              }
                            ],
                            "id": 618,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2290:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2290:76:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 627,
                        "nodeType": "ExpressionStatement",
                        "src": "2290:76:4"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 628,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 545,
                              "src": "2383:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 630,
                            "indexExpression": {
                              "id": 629,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 612,
                              "src": "2393:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2383:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 632,
                          "indexExpression": {
                            "id": 631,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 610,
                            "src": "2397:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2383:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 617,
                        "id": 633,
                        "nodeType": "Return",
                        "src": "2376:29:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 608,
                    "nodeType": "StructuredDocumentation",
                    "src": "2049:131:4",
                    "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 635,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "2194:9:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 614,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2253:8:4"
                  },
                  "parameters": {
                    "id": 613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 610,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2212:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 635,
                        "src": "2204:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2204:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 612,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2229:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 635,
                        "src": "2221:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2221:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2203:29:4"
                  },
                  "returnParameters": {
                    "id": 617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 616,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 635,
                        "src": "2271:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2271:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2270:9:4"
                  },
                  "scope": 1742,
                  "src": "2185:227:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1815
                  ],
                  "body": {
                    "id": 698,
                    "nodeType": "Block",
                    "src": "2742:335:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 650,
                                  "name": "accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 639,
                                  "src": "2760:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 651,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2760:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 652,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 642,
                                  "src": "2779:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2779:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2760:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368",
                              "id": 655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2791:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              },
                              "value": "ERC1155: accounts and ids length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                              }
                            ],
                            "id": 649,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2752:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2752:83:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 657,
                        "nodeType": "ExpressionStatement",
                        "src": "2752:83:4"
                      },
                      {
                        "assignments": [
                          662
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 662,
                            "mutability": "mutable",
                            "name": "batchBalances",
                            "nameLocation": "2863:13:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 698,
                            "src": "2846:30:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 660,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2846:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 661,
                              "nodeType": "ArrayTypeName",
                              "src": "2846:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 669,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 666,
                                "name": "accounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 639,
                                "src": "2893:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2893:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2879:13:4",
                            "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": 663,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2883:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 664,
                              "nodeType": "ArrayTypeName",
                              "src": "2883:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2879:30:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2846:63:4"
                      },
                      {
                        "body": {
                          "id": 694,
                          "nodeType": "Block",
                          "src": "2966:74:4",
                          "statements": [
                            {
                              "expression": {
                                "id": 692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 681,
                                    "name": "batchBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 662,
                                    "src": "2980:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 683,
                                  "indexExpression": {
                                    "id": 682,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 671,
                                    "src": "2994:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2980:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 685,
                                        "name": "accounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 639,
                                        "src": "3009:8:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 687,
                                      "indexExpression": {
                                        "id": 686,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 671,
                                        "src": "3018:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3009:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 688,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 642,
                                        "src": "3022:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 690,
                                      "indexExpression": {
                                        "id": 689,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 671,
                                        "src": "3026:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3022:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 684,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 635,
                                    "src": "2999:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2999:30:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2980:49:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 693,
                              "nodeType": "ExpressionStatement",
                              "src": "2980:49:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 674,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 671,
                            "src": "2940:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 675,
                              "name": "accounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 639,
                              "src": "2944:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2944:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2940:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 695,
                        "initializationExpression": {
                          "assignments": [
                            671
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 671,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2933:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 695,
                              "src": "2925:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 670,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2925:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 673,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2937:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2925:13:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2961:3:4",
                            "subExpression": {
                              "id": 678,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 671,
                              "src": "2963:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 680,
                          "nodeType": "ExpressionStatement",
                          "src": "2961:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "2920:120:4"
                      },
                      {
                        "expression": {
                          "id": 696,
                          "name": "batchBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "3057:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 648,
                        "id": 697,
                        "nodeType": "Return",
                        "src": "3050:20:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 636,
                    "nodeType": "StructuredDocumentation",
                    "src": "2418:146:4",
                    "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 699,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "2578:14:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 644,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2694:8:4"
                  },
                  "parameters": {
                    "id": 643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 639,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "2610:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 699,
                        "src": "2593:25:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 637,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2593:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 638,
                          "nodeType": "ArrayTypeName",
                          "src": "2593:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 642,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2637:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 699,
                        "src": "2620:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 640,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2620:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 641,
                          "nodeType": "ArrayTypeName",
                          "src": "2620:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2592:49:4"
                  },
                  "returnParameters": {
                    "id": 648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 647,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 699,
                        "src": "2720:16:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 645,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2720:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 646,
                          "nodeType": "ArrayTypeName",
                          "src": "2720:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2719:18:4"
                  },
                  "scope": 1742,
                  "src": "2569:508:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1823
                  ],
                  "body": {
                    "id": 715,
                    "nodeType": "Block",
                    "src": "3229:69:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 709,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2651,
                                "src": "3258:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3258:12:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 711,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 702,
                              "src": "3272:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 712,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 704,
                              "src": "3282:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 708,
                            "name": "_setApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1547,
                            "src": "3239:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3239:52:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 714,
                        "nodeType": "ExpressionStatement",
                        "src": "3239:52:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 700,
                    "nodeType": "StructuredDocumentation",
                    "src": "3083:57:4",
                    "text": " @dev See {IERC1155-setApprovalForAll}."
                  },
                  "functionSelector": "a22cb465",
                  "id": 716,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "3154:17:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 706,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3220:8:4"
                  },
                  "parameters": {
                    "id": 705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 702,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3180:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 716,
                        "src": "3172:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3172:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 704,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "3195:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 716,
                        "src": "3190:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 703,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3190:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3171:33:4"
                  },
                  "returnParameters": {
                    "id": 707,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3229:0:4"
                  },
                  "scope": 1742,
                  "src": "3145:153:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1833
                  ],
                  "body": {
                    "id": 733,
                    "nodeType": "Block",
                    "src": "3470:61:4",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 727,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 551,
                              "src": "3487:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 729,
                            "indexExpression": {
                              "id": 728,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 719,
                              "src": "3506:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3487:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 731,
                          "indexExpression": {
                            "id": 730,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 721,
                            "src": "3515:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3487:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 726,
                        "id": 732,
                        "nodeType": "Return",
                        "src": "3480:44:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 717,
                    "nodeType": "StructuredDocumentation",
                    "src": "3304:56:4",
                    "text": " @dev See {IERC1155-isApprovedForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "3374:16:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 723,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3446:8:4"
                  },
                  "parameters": {
                    "id": 722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 719,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3399:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 734,
                        "src": "3391:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 718,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3391:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 721,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3416:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 734,
                        "src": "3408:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3408:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3390:35:4"
                  },
                  "returnParameters": {
                    "id": 726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 725,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 734,
                        "src": "3464:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 724,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3464:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3463:6:4"
                  },
                  "scope": 1742,
                  "src": "3365:166:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1847
                  ],
                  "body": {
                    "id": 771,
                    "nodeType": "Block",
                    "src": "3767:226:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 750,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 737,
                                  "src": "3798:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 751,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "3806:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3806:12:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3798:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 755,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 737,
                                    "src": "3839:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 756,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "3845:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3845:12:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 754,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 734,
                                  "src": "3822:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3822:36:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3798:60:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3872:49:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              },
                              "value": "ERC1155: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 749,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3777:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3777:154:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 762,
                        "nodeType": "ExpressionStatement",
                        "src": "3777:154:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 764,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 737,
                              "src": "3959:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 765,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 739,
                              "src": "3965:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 766,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 741,
                              "src": "3969:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 767,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 743,
                              "src": "3973:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 768,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 745,
                              "src": "3981:4:4",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 763,
                            "name": "_safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 929,
                            "src": "3941:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3941:45:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 770,
                        "nodeType": "ExpressionStatement",
                        "src": "3941:45:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 735,
                    "nodeType": "StructuredDocumentation",
                    "src": "3537:56:4",
                    "text": " @dev See {IERC1155-safeTransferFrom}."
                  },
                  "functionSelector": "f242432a",
                  "id": 772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3607:16:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 747,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3758:8:4"
                  },
                  "parameters": {
                    "id": 746,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 737,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3641:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 772,
                        "src": "3633:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3633:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 739,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3663:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 772,
                        "src": "3655:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3655:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 741,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3683:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 772,
                        "src": "3675:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3675:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 743,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3703:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 772,
                        "src": "3695:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3695:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 745,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3732:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 772,
                        "src": "3719:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 744,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3719:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3623:119:4"
                  },
                  "returnParameters": {
                    "id": 748,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3767:0:4"
                  },
                  "scope": 1742,
                  "src": "3598:395:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1863
                  ],
                  "body": {
                    "id": 811,
                    "nodeType": "Block",
                    "src": "4259:233:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 790,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 775,
                                  "src": "4290:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 791,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "4298:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4298:12:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4290:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 795,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 775,
                                    "src": "4331:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 796,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "4337:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4337:12:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 794,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 734,
                                  "src": "4314:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4314:36:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4290:60:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4364:49:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              },
                              "value": "ERC1155: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 789,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4269:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4269:154:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 802,
                        "nodeType": "ExpressionStatement",
                        "src": "4269:154:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 804,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 775,
                              "src": "4456:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 805,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 777,
                              "src": "4462:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 806,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 780,
                              "src": "4466:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 807,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 783,
                              "src": "4471:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 808,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 785,
                              "src": "4480:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 803,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1064,
                            "src": "4433:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4433:52:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 810,
                        "nodeType": "ExpressionStatement",
                        "src": "4433:52:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 773,
                    "nodeType": "StructuredDocumentation",
                    "src": "3999:61:4",
                    "text": " @dev See {IERC1155-safeBatchTransferFrom}."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "4074:21:4",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 787,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4250:8:4"
                  },
                  "parameters": {
                    "id": 786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 775,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4113:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 812,
                        "src": "4105:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4105:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 777,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4135:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 812,
                        "src": "4127:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4127:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 780,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "4164:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 812,
                        "src": "4147:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 778,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4147:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 779,
                          "nodeType": "ArrayTypeName",
                          "src": "4147:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 783,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "4194:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 812,
                        "src": "4177:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 781,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4177:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 782,
                          "nodeType": "ArrayTypeName",
                          "src": "4177:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 785,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4224:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 812,
                        "src": "4211:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 784,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4211:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4095:139:4"
                  },
                  "returnParameters": {
                    "id": 788,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4259:0:4"
                  },
                  "scope": 1742,
                  "src": "4065:427:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 928,
                    "nodeType": "Block",
                    "src": "5105:784:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 827,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 817,
                                "src": "5123:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5137:1:4",
                                    "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": 829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5129:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 828,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5129:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5129:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5123:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5141:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 826,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5115:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5115:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 835,
                        "nodeType": "ExpressionStatement",
                        "src": "5115:66:4"
                      },
                      {
                        "assignments": [
                          837
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 837,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "5200:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 928,
                            "src": "5192:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 836,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5192:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 840,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 838,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "5211:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5211:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5192:31:4"
                      },
                      {
                        "assignments": [
                          845
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 845,
                            "mutability": "mutable",
                            "name": "ids",
                            "nameLocation": "5250:3:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 928,
                            "src": "5233:20:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 843,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5233:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 844,
                              "nodeType": "ArrayTypeName",
                              "src": "5233:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 849,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 847,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 819,
                              "src": "5274:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 846,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "5256:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5256:21:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5233:44:4"
                      },
                      {
                        "assignments": [
                          854
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 854,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nameLocation": "5304:7:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 928,
                            "src": "5287:24:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 852,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5287:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 853,
                              "nodeType": "ArrayTypeName",
                              "src": "5287:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 858,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 856,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 821,
                              "src": "5332:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 855,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "5314:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5314:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5287:52:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 860,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 837,
                              "src": "5371:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 861,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 815,
                              "src": "5381:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 862,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "5387:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 863,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "5391:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 864,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 854,
                              "src": "5396:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 865,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "5405:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 859,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "5350:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5350:60:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 867,
                        "nodeType": "ExpressionStatement",
                        "src": "5350:60:4"
                      },
                      {
                        "assignments": [
                          869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 869,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "5429:11:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 928,
                            "src": "5421:19:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 868,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5421:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 875,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 870,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 545,
                              "src": "5443:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 872,
                            "indexExpression": {
                              "id": 871,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 819,
                              "src": "5453:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5443:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 874,
                          "indexExpression": {
                            "id": 873,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 815,
                            "src": "5457:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5443:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5421:41:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 877,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 869,
                                "src": "5480:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 878,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 821,
                                "src": "5495:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5480:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                              "id": 880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5503:44:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              },
                              "value": "ERC1155: insufficient balance for transfer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                              }
                            ],
                            "id": 876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5472:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5472:76:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 882,
                        "nodeType": "ExpressionStatement",
                        "src": "5472:76:4"
                      },
                      {
                        "id": 893,
                        "nodeType": "UncheckedBlock",
                        "src": "5558:77:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 883,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "5582:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 886,
                                  "indexExpression": {
                                    "id": 884,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 819,
                                    "src": "5592:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5582:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 887,
                                "indexExpression": {
                                  "id": 885,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 815,
                                  "src": "5596:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5582:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 888,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 869,
                                  "src": "5604:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 889,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 821,
                                  "src": "5618:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5604:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5582:42:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 892,
                            "nodeType": "ExpressionStatement",
                            "src": "5582:42:4"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 894,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 545,
                                "src": "5644:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 897,
                              "indexExpression": {
                                "id": 895,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 819,
                                "src": "5654:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5644:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 898,
                            "indexExpression": {
                              "id": 896,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "5658:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5644:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 899,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 821,
                            "src": "5665:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5644:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 901,
                        "nodeType": "ExpressionStatement",
                        "src": "5644:27:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 903,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 837,
                              "src": "5702:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 904,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 815,
                              "src": "5712:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 905,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "5718:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 906,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 819,
                              "src": "5722:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 907,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 821,
                              "src": "5726:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 902,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1761,
                            "src": "5687:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5687:46:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 909,
                        "nodeType": "EmitStatement",
                        "src": "5682:51:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 911,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 837,
                              "src": "5764:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 912,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 815,
                              "src": "5774:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 913,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "5780:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 914,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "5784:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 915,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 854,
                              "src": "5789:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 916,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "5798:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 910,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "5744:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5744:59:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 918,
                        "nodeType": "ExpressionStatement",
                        "src": "5744:59:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 920,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 837,
                              "src": "5845:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 921,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 815,
                              "src": "5855:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 922,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "5861:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 923,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 819,
                              "src": "5865:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 924,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 821,
                              "src": "5869:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 925,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "5877:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 919,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1648,
                            "src": "5814:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5814:68:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 927,
                        "nodeType": "ExpressionStatement",
                        "src": "5814:68:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 813,
                    "nodeType": "StructuredDocumentation",
                    "src": "4498:439:4",
                    "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                  },
                  "id": 929,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferFrom",
                  "nameLocation": "4951:17:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 815,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4986:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 929,
                        "src": "4978:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4978:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 817,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5008:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 929,
                        "src": "5000:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 816,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5000:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 819,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5028:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 929,
                        "src": "5020:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 818,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5020:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 821,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5048:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 929,
                        "src": "5040:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 820,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5040:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 823,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5077:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 929,
                        "src": "5064:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 822,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5064:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4968:119:4"
                  },
                  "returnParameters": {
                    "id": 825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5105:0:4"
                  },
                  "scope": 1742,
                  "src": "4942:947:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1063,
                    "nodeType": "Block",
                    "src": "6423:927:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 946,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 937,
                                  "src": "6441:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6441:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 948,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 940,
                                  "src": "6455:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6455:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6441:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "id": 951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6471:42:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              },
                              "value": "ERC1155: ids and amounts length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              }
                            ],
                            "id": 945,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6433:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6433:81:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 953,
                        "nodeType": "ExpressionStatement",
                        "src": "6433:81:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 955,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 934,
                                "src": "6532:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6546:1:4",
                                    "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": 957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6538:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 956,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6538:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6538:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6532:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6550:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              },
                              "value": "ERC1155: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                              }
                            ],
                            "id": 954,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6524:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6524:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 963,
                        "nodeType": "ExpressionStatement",
                        "src": "6524:66:4"
                      },
                      {
                        "assignments": [
                          965
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 965,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "6609:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1063,
                            "src": "6601:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 964,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6601:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 968,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 966,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "6620:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6620:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6601:31:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 970,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 965,
                              "src": "6664:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 971,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "6674:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 972,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 934,
                              "src": "6680:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 973,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 937,
                              "src": "6684:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 974,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 940,
                              "src": "6689:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 975,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 942,
                              "src": "6698:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 969,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "6643:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6643:60:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 977,
                        "nodeType": "ExpressionStatement",
                        "src": "6643:60:4"
                      },
                      {
                        "body": {
                          "id": 1035,
                          "nodeType": "Block",
                          "src": "6755:370:4",
                          "statements": [
                            {
                              "assignments": [
                                990
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 990,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nameLocation": "6777:2:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1035,
                                  "src": "6769:10:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 989,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6769:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 994,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 991,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 937,
                                  "src": "6782:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 993,
                                "indexExpression": {
                                  "id": 992,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 979,
                                  "src": "6786:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6782:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6769:19:4"
                            },
                            {
                              "assignments": [
                                996
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 996,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nameLocation": "6810:6:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1035,
                                  "src": "6802:14:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 995,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6802:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1000,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 997,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 940,
                                  "src": "6819:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 999,
                                "indexExpression": {
                                  "id": 998,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 979,
                                  "src": "6827:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6819:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6802:27:4"
                            },
                            {
                              "assignments": [
                                1002
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1002,
                                  "mutability": "mutable",
                                  "name": "fromBalance",
                                  "nameLocation": "6852:11:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1035,
                                  "src": "6844:19:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1001,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6844:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1008,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 1003,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "6866:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 1005,
                                  "indexExpression": {
                                    "id": 1004,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 990,
                                    "src": "6876:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6866:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1007,
                                "indexExpression": {
                                  "id": 1006,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 932,
                                  "src": "6880:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6866:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6844:41:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1012,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1010,
                                      "name": "fromBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1002,
                                      "src": "6907:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 1011,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 996,
                                      "src": "6922:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6907:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                    "id": 1013,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6930:44:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    },
                                    "value": "ERC1155: insufficient balance for transfer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    }
                                  ],
                                  "id": 1009,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6899:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1014,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6899:76:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1015,
                              "nodeType": "ExpressionStatement",
                              "src": "6899:76:4"
                            },
                            {
                              "id": 1026,
                              "nodeType": "UncheckedBlock",
                              "src": "6989:85:4",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 1016,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 545,
                                          "src": "7017:9:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                          }
                                        },
                                        "id": 1019,
                                        "indexExpression": {
                                          "id": 1017,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 990,
                                          "src": "7027:2:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7017:13:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 1020,
                                      "indexExpression": {
                                        "id": 1018,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 932,
                                        "src": "7031:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "7017:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1023,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 1021,
                                        "name": "fromBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1002,
                                        "src": "7039:11:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 1022,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 996,
                                        "src": "7053:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7039:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7017:42:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1025,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7017:42:4"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 1033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 1027,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 545,
                                      "src": "7087:9:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 1030,
                                    "indexExpression": {
                                      "id": 1028,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 990,
                                      "src": "7097:2:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7087:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 1031,
                                  "indexExpression": {
                                    "id": 1029,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 934,
                                    "src": "7101:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7087:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 1032,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 996,
                                  "src": "7108:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7087:27:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1034,
                              "nodeType": "ExpressionStatement",
                              "src": "7087:27:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 982,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 979,
                            "src": "6734:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 983,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 937,
                              "src": "6738:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6738:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6734:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1036,
                        "initializationExpression": {
                          "assignments": [
                            979
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 979,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6727:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1036,
                              "src": "6719:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 978,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6719:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 981,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6731:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6719:13:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6750:3:4",
                            "subExpression": {
                              "id": 986,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "6752:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 988,
                          "nodeType": "ExpressionStatement",
                          "src": "6750:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "6714:411:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1038,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 965,
                              "src": "7154:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1039,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "7164:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1040,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 934,
                              "src": "7170:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1041,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 937,
                              "src": "7174:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1042,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 940,
                              "src": "7179:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1037,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1776,
                            "src": "7140:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7140:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1044,
                        "nodeType": "EmitStatement",
                        "src": "7135:52:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1046,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 965,
                              "src": "7218:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1047,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "7228:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1048,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 934,
                              "src": "7234:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1049,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 937,
                              "src": "7238:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1050,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 940,
                              "src": "7243:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1051,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 942,
                              "src": "7252:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1045,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "7198:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7198:59:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1053,
                        "nodeType": "ExpressionStatement",
                        "src": "7198:59:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1055,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 965,
                              "src": "7304:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1056,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "7314:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1057,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 934,
                              "src": "7320:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1058,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 937,
                              "src": "7324:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1059,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 940,
                              "src": "7329:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1060,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 942,
                              "src": "7338:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1054,
                            "name": "_doSafeBatchTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "7268:35:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7268:75:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1062,
                        "nodeType": "ExpressionStatement",
                        "src": "7268:75:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 930,
                    "nodeType": "StructuredDocumentation",
                    "src": "5895:335:4",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                  },
                  "id": 1064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nameLocation": "6244:22:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 932,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "6284:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1064,
                        "src": "6276:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 931,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6276:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 934,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "6306:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1064,
                        "src": "6298:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6298:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 937,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "6335:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1064,
                        "src": "6318:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 935,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6318:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 936,
                          "nodeType": "ArrayTypeName",
                          "src": "6318:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 940,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "6365:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1064,
                        "src": "6348:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 938,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6348:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 939,
                          "nodeType": "ArrayTypeName",
                          "src": "6348:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 942,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6395:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1064,
                        "src": "6382:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 941,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6382:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6266:139:4"
                  },
                  "returnParameters": {
                    "id": 944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6423:0:4"
                  },
                  "scope": 1742,
                  "src": "6235:1115:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1074,
                    "nodeType": "Block",
                    "src": "8229:30:4",
                    "statements": [
                      {
                        "expression": {
                          "id": 1072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1070,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 553,
                            "src": "8239:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1071,
                            "name": "newuri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1067,
                            "src": "8246:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "8239:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1073,
                        "nodeType": "ExpressionStatement",
                        "src": "8239:13:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1065,
                    "nodeType": "StructuredDocumentation",
                    "src": "7356:812:4",
                    "text": " @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."
                  },
                  "id": 1075,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setURI",
                  "nameLocation": "8182:7:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1067,
                        "mutability": "mutable",
                        "name": "newuri",
                        "nameLocation": "8204:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1075,
                        "src": "8190:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1066,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8190:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8189:22:4"
                  },
                  "returnParameters": {
                    "id": 1069,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8229:0:4"
                  },
                  "scope": 1742,
                  "src": "8173:86:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1175,
                    "nodeType": "Block",
                    "src": "8761:580:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1088,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1078,
                                "src": "8779:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8793:1:4",
                                    "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": 1090,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8785:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1089,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8785:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8785:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8779:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 1094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8797:35:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              },
                              "value": "ERC1155: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              }
                            ],
                            "id": 1087,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8771:7:4",
                            "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": "8771:62:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1096,
                        "nodeType": "ExpressionStatement",
                        "src": "8771:62:4"
                      },
                      {
                        "assignments": [
                          1098
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1098,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "8852:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1175,
                            "src": "8844:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1097,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8844:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1099,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "8863:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8863:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8844:31:4"
                      },
                      {
                        "assignments": [
                          1106
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1106,
                            "mutability": "mutable",
                            "name": "ids",
                            "nameLocation": "8902:3:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1175,
                            "src": "8885:20:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1104,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8885:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1105,
                              "nodeType": "ArrayTypeName",
                              "src": "8885:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1110,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1108,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1080,
                              "src": "8926:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1107,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "8908:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 1109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8908:21:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8885:44:4"
                      },
                      {
                        "assignments": [
                          1115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1115,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nameLocation": "8956:7:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1175,
                            "src": "8939:24:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1113,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8939:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1114,
                              "nodeType": "ArrayTypeName",
                              "src": "8939:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1119,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1117,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "8984:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1116,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "8966:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8966:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8939:52:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1121,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "9023:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9041:1:4",
                                  "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": 1123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9033:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1122,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9033:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9033:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1126,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "9045:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1127,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "9049:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1128,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "9054:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1129,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1084,
                              "src": "9063:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1120,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "9002:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9002:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1131,
                        "nodeType": "ExpressionStatement",
                        "src": "9002:66:4"
                      },
                      {
                        "expression": {
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1132,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 545,
                                "src": "9079:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 1135,
                              "indexExpression": {
                                "id": 1133,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1080,
                                "src": "9089:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9079:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1136,
                            "indexExpression": {
                              "id": 1134,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "9093:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9079:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1137,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1082,
                            "src": "9100:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9079:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1139,
                        "nodeType": "ExpressionStatement",
                        "src": "9079:27:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1141,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "9136:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9154:1:4",
                                  "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": 1143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9146:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1142,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9146:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9146:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1146,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "9158:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1147,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1080,
                              "src": "9162:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1148,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "9166:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1140,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1761,
                            "src": "9121:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 1149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9121:52:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1150,
                        "nodeType": "EmitStatement",
                        "src": "9116:57:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1152,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "9204:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9222:1:4",
                                  "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": 1154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9214:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1153,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9214:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9214:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1157,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "9226:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1158,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "9230:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1159,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "9235:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1160,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1084,
                              "src": "9244:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1151,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "9184:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9184:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1162,
                        "nodeType": "ExpressionStatement",
                        "src": "9184:65:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1164,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1098,
                              "src": "9291:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1167,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9309:1:4",
                                  "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": 1166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9301:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1165,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9301:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9301:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1169,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "9313:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1170,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1080,
                              "src": "9317:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1171,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "9321:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1172,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1084,
                              "src": "9329:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1163,
                            "name": "_doSafeTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1648,
                            "src": "9260:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 1173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9260:74:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1174,
                        "nodeType": "ExpressionStatement",
                        "src": "9260:74:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1076,
                    "nodeType": "StructuredDocumentation",
                    "src": "8265:362:4",
                    "text": " @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                  },
                  "id": 1176,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "8641:5:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1078,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8664:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "8656:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8656:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1080,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "8684:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "8676:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8676:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1082,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8704:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "8696:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8696:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1084,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8733:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "8720:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1083,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8720:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8646:97:4"
                  },
                  "returnParameters": {
                    "id": 1086,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8761:0:4"
                  },
                  "scope": 1742,
                  "src": "8632:709:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1286,
                    "nodeType": "Block",
                    "src": "9885:637:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1191,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1179,
                                "src": "9903:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9917:1:4",
                                    "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": 1193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9909:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1192,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9909:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9909:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9903:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 1197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9921:35:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              },
                              "value": "ERC1155: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                "typeString": "literal_string \"ERC1155: mint to the zero address\""
                              }
                            ],
                            "id": 1190,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9895:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9895:62:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1199,
                        "nodeType": "ExpressionStatement",
                        "src": "9895:62:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1201,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1182,
                                  "src": "9975:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9975:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 1203,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1185,
                                  "src": "9989:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9989:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9975:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "id": 1206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10005:42:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              },
                              "value": "ERC1155: ids and amounts length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              }
                            ],
                            "id": 1200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9967:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9967:81:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1208,
                        "nodeType": "ExpressionStatement",
                        "src": "9967:81:4"
                      },
                      {
                        "assignments": [
                          1210
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1210,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "10067:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1286,
                            "src": "10059:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1209,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10059:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1213,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1211,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "10078:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10078:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10059:31:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1215,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1210,
                              "src": "10122:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10140:1:4",
                                  "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": 1217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10132:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1216,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10132:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10132:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1220,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1179,
                              "src": "10144:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1221,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "10148:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1222,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1185,
                              "src": "10153:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1223,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1187,
                              "src": "10162:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1214,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "10101:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10101:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1225,
                        "nodeType": "ExpressionStatement",
                        "src": "10101:66:4"
                      },
                      {
                        "body": {
                          "id": 1249,
                          "nodeType": "Block",
                          "src": "10219:60:4",
                          "statements": [
                            {
                              "expression": {
                                "id": 1247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 1237,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 545,
                                      "src": "10233:9:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 1242,
                                    "indexExpression": {
                                      "baseExpression": {
                                        "id": 1238,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1182,
                                        "src": "10243:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1240,
                                      "indexExpression": {
                                        "id": 1239,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1227,
                                        "src": "10247:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10243:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10233:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 1243,
                                  "indexExpression": {
                                    "id": 1241,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1179,
                                    "src": "10251:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10233:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 1244,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1185,
                                    "src": "10258:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1246,
                                  "indexExpression": {
                                    "id": 1245,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1227,
                                    "src": "10266:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10258:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10233:35:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1248,
                              "nodeType": "ExpressionStatement",
                              "src": "10233:35:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1230,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1227,
                            "src": "10198:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1231,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "10202:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "10202:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10198:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1250,
                        "initializationExpression": {
                          "assignments": [
                            1227
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1227,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "10191:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1250,
                              "src": "10183:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1226,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10183:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1229,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10195:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10183:13:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10214:3:4",
                            "subExpression": {
                              "id": 1234,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1227,
                              "src": "10214:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1236,
                          "nodeType": "ExpressionStatement",
                          "src": "10214:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "10178:101:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1252,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1210,
                              "src": "10308:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10326:1:4",
                                  "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": 1254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10318:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1253,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10318:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10318:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1257,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1179,
                              "src": "10330:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1258,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "10334:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1259,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1185,
                              "src": "10339:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1251,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1776,
                            "src": "10294:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10294:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1261,
                        "nodeType": "EmitStatement",
                        "src": "10289:58:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1263,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1210,
                              "src": "10378:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10396:1:4",
                                  "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": 1265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10388:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1264,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10388:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10388:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1268,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1179,
                              "src": "10400:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1269,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "10404:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1270,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1185,
                              "src": "10409:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1271,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1187,
                              "src": "10418:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1262,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "10358:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10358:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1273,
                        "nodeType": "ExpressionStatement",
                        "src": "10358:65:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1275,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1210,
                              "src": "10470:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10488:1:4",
                                  "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": 1277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10480:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1276,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10480:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10480:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1280,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1179,
                              "src": "10492:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1281,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "10496:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1282,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1185,
                              "src": "10501:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1283,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1187,
                              "src": "10510:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1274,
                            "name": "_doSafeBatchTransferAcceptanceCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "10434:35:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10434:81:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1285,
                        "nodeType": "ExpressionStatement",
                        "src": "10434:81:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1177,
                    "nodeType": "StructuredDocumentation",
                    "src": "9347:379:4",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                  },
                  "id": 1287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintBatch",
                  "nameLocation": "9740:10:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1179,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "9768:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1287,
                        "src": "9760:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1178,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9760:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1182,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "9797:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1287,
                        "src": "9780:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1180,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9780:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1181,
                          "nodeType": "ArrayTypeName",
                          "src": "9780:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1185,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "9827:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1287,
                        "src": "9810:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1183,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9810:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1184,
                          "nodeType": "ArrayTypeName",
                          "src": "9810:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1187,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9857:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1287,
                        "src": "9844:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1186,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9844:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9750:117:4"
                  },
                  "returnParameters": {
                    "id": 1189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9885:0:4"
                  },
                  "scope": 1742,
                  "src": "9731:791:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1391,
                    "nodeType": "Block",
                    "src": "10912:682:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1298,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1290,
                                "src": "10930:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10946:1:4",
                                    "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": 1300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10938:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1299,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10938:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10938:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10930:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 1304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10950:37:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              },
                              "value": "ERC1155: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              }
                            ],
                            "id": 1297,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10922:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10922:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1306,
                        "nodeType": "ExpressionStatement",
                        "src": "10922:66:4"
                      },
                      {
                        "assignments": [
                          1308
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1308,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "11007:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1391,
                            "src": "10999:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1307,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10999:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1311,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1309,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "11018:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11018:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10999:31:4"
                      },
                      {
                        "assignments": [
                          1316
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1316,
                            "mutability": "mutable",
                            "name": "ids",
                            "nameLocation": "11057:3:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1391,
                            "src": "11040:20:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1314,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11040:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1315,
                              "nodeType": "ArrayTypeName",
                              "src": "11040:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1320,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1318,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1292,
                              "src": "11081:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1317,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "11063:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 1319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11063:21:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11040:44:4"
                      },
                      {
                        "assignments": [
                          1325
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1325,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nameLocation": "11111:7:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1391,
                            "src": "11094:24:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1323,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11094:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1324,
                              "nodeType": "ArrayTypeName",
                              "src": "11094:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1329,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1327,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1294,
                              "src": "11139:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1326,
                            "name": "_asSingletonArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "11121:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            }
                          },
                          "id": 1328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11121:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11094:52:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1331,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1308,
                              "src": "11178:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1332,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1290,
                              "src": "11188:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11202:1:4",
                                  "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": 1334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11194:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1333,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11194:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11194:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1337,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1316,
                              "src": "11206:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1338,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1325,
                              "src": "11211:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11220:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1330,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "11157:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11157:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1341,
                        "nodeType": "ExpressionStatement",
                        "src": "11157:66:4"
                      },
                      {
                        "assignments": [
                          1343
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1343,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "11242:11:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1391,
                            "src": "11234:19:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1342,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11234:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1349,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1344,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 545,
                              "src": "11256:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 1346,
                            "indexExpression": {
                              "id": 1345,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1292,
                              "src": "11266:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11256:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1348,
                          "indexExpression": {
                            "id": 1347,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1290,
                            "src": "11270:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11256:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11234:41:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1351,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1343,
                                "src": "11293:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1352,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1294,
                                "src": "11308:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11293:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 1354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11316:38:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                              },
                              "value": "ERC1155: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                              }
                            ],
                            "id": 1350,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11285:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11285:70:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1356,
                        "nodeType": "ExpressionStatement",
                        "src": "11285:70:4"
                      },
                      {
                        "id": 1367,
                        "nodeType": "UncheckedBlock",
                        "src": "11365:77:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 1365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 1357,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "11389:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 1360,
                                  "indexExpression": {
                                    "id": 1358,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1292,
                                    "src": "11399:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11389:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1361,
                                "indexExpression": {
                                  "id": 1359,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1290,
                                  "src": "11403:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11389:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1362,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1343,
                                  "src": "11411:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1363,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1294,
                                  "src": "11425:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11411:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11389:42:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1366,
                            "nodeType": "ExpressionStatement",
                            "src": "11389:42:4"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1369,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1308,
                              "src": "11472:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1370,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1290,
                              "src": "11482:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11496:1:4",
                                  "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": 1372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11488:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1371,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11488:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11488:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1375,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1292,
                              "src": "11500:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1376,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1294,
                              "src": "11504:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1368,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1761,
                            "src": "11457:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 1377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11457:54:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1378,
                        "nodeType": "EmitStatement",
                        "src": "11452:59:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1380,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1308,
                              "src": "11542:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1381,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1290,
                              "src": "11552:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11566:1:4",
                                  "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": 1383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11558:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1382,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11558:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11558:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1386,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1316,
                              "src": "11570:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1387,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1325,
                              "src": "11575:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11584:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1379,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "11522:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11522:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1390,
                        "nodeType": "ExpressionStatement",
                        "src": "11522:65:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1288,
                    "nodeType": "StructuredDocumentation",
                    "src": "10528:275:4",
                    "text": " @dev Destroys `amount` tokens of token type `id` from `from`\n Emits a {TransferSingle} event.\n Requirements:\n - `from` cannot be the zero address.\n - `from` must have at least `amount` tokens of token type `id`."
                  },
                  "id": 1392,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "10817:5:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1290,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "10840:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1392,
                        "src": "10832:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10832:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1292,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "10862:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1392,
                        "src": "10854:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10854:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1294,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "10882:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1392,
                        "src": "10874:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10874:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10822:72:4"
                  },
                  "returnParameters": {
                    "id": 1296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10912:0:4"
                  },
                  "scope": 1742,
                  "src": "10808:786:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1514,
                    "nodeType": "Block",
                    "src": "11962:814:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1405,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1395,
                                "src": "11980:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11996:1:4",
                                    "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": 1407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11988:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1406,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11988:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11988:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11980:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 1411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12000:37:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              },
                              "value": "ERC1155: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                "typeString": "literal_string \"ERC1155: burn from the zero address\""
                              }
                            ],
                            "id": 1404,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11972:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11972:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1413,
                        "nodeType": "ExpressionStatement",
                        "src": "11972:66:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1415,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1398,
                                  "src": "12056:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12056:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 1417,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1401,
                                  "src": "12070:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12070:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12056:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "id": 1420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12086:42:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              },
                              "value": "ERC1155: ids and amounts length mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                              }
                            ],
                            "id": 1414,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12048:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12048:81:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1422,
                        "nodeType": "ExpressionStatement",
                        "src": "12048:81:4"
                      },
                      {
                        "assignments": [
                          1424
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1424,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "12148:8:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1514,
                            "src": "12140:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1423,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12140:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1427,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1425,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "12159:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12159:12:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12140:31:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1429,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "12203:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1430,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1395,
                              "src": "12213:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12227:1:4",
                                  "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": 1432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12219:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1431,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12219:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12219:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1435,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1398,
                              "src": "12231:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1436,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1401,
                              "src": "12236:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12245:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1428,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "12182:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12182:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1439,
                        "nodeType": "ExpressionStatement",
                        "src": "12182:66:4"
                      },
                      {
                        "body": {
                          "id": 1489,
                          "nodeType": "Block",
                          "src": "12300:323:4",
                          "statements": [
                            {
                              "assignments": [
                                1452
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1452,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nameLocation": "12322:2:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1489,
                                  "src": "12314:10:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1451,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12314:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1456,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1453,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1398,
                                  "src": "12327:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1455,
                                "indexExpression": {
                                  "id": 1454,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1441,
                                  "src": "12331:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12327:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12314:19:4"
                            },
                            {
                              "assignments": [
                                1458
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1458,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nameLocation": "12355:6:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1489,
                                  "src": "12347:14:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1457,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12347:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1462,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1459,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1401,
                                  "src": "12364:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1461,
                                "indexExpression": {
                                  "id": 1460,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1441,
                                  "src": "12372:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12364:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12347:27:4"
                            },
                            {
                              "assignments": [
                                1464
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1464,
                                  "mutability": "mutable",
                                  "name": "fromBalance",
                                  "nameLocation": "12397:11:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1489,
                                  "src": "12389:19:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1463,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12389:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1470,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 1465,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "12411:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 1467,
                                  "indexExpression": {
                                    "id": 1466,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1452,
                                    "src": "12421:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12411:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1469,
                                "indexExpression": {
                                  "id": 1468,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1395,
                                  "src": "12425:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12411:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12389:41:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1474,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1472,
                                      "name": "fromBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1464,
                                      "src": "12452:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 1473,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1458,
                                      "src": "12467:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12452:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                    "id": 1475,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12475:38:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                      "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                    },
                                    "value": "ERC1155: burn amount exceeds balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                      "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                    }
                                  ],
                                  "id": 1471,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "12444:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12444:70:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1477,
                              "nodeType": "ExpressionStatement",
                              "src": "12444:70:4"
                            },
                            {
                              "id": 1488,
                              "nodeType": "UncheckedBlock",
                              "src": "12528:85:4",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 1478,
                                          "name": "_balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 545,
                                          "src": "12556:9:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                          }
                                        },
                                        "id": 1481,
                                        "indexExpression": {
                                          "id": 1479,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1452,
                                          "src": "12566:2:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12556:13:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 1482,
                                      "indexExpression": {
                                        "id": 1480,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1395,
                                        "src": "12570:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "12556:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1485,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 1483,
                                        "name": "fromBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1464,
                                        "src": "12578:11:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 1484,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1458,
                                        "src": "12592:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12578:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12556:42:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1487,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12556:42:4"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1444,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1441,
                            "src": "12279:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1445,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1398,
                              "src": "12283:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "12283:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12279:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1490,
                        "initializationExpression": {
                          "assignments": [
                            1441
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1441,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "12272:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1490,
                              "src": "12264:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1440,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12264:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1443,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12276:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12264:13:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12295:3:4",
                            "subExpression": {
                              "id": 1448,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1441,
                              "src": "12295:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1450,
                          "nodeType": "ExpressionStatement",
                          "src": "12295:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "12259:364:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1492,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "12652:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1493,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1395,
                              "src": "12662:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12676:1:4",
                                  "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": 1495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12668:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1494,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12668:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12668:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1498,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1398,
                              "src": "12680:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1499,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1401,
                              "src": "12685:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1491,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1776,
                            "src": "12638:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12638:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1501,
                        "nodeType": "EmitStatement",
                        "src": "12633:60:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1503,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "12724:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1504,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1395,
                              "src": "12734:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12748:1:4",
                                  "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": "12740:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1505,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12740:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12740:10:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1509,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1398,
                              "src": "12752:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1510,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1401,
                              "src": "12757:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12766:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1502,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1585,
                            "src": "12704:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 1512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12704:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1513,
                        "nodeType": "ExpressionStatement",
                        "src": "12704:65:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1393,
                    "nodeType": "StructuredDocumentation",
                    "src": "11600:228:4",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length."
                  },
                  "id": 1515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnBatch",
                  "nameLocation": "11842:10:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1395,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "11870:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1515,
                        "src": "11862:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1394,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11862:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1398,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "11901:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1515,
                        "src": "11884:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1396,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11884:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1397,
                          "nodeType": "ArrayTypeName",
                          "src": "11884:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1401,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "11931:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1515,
                        "src": "11914:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1399,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11914:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1400,
                          "nodeType": "ArrayTypeName",
                          "src": "11914:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11852:92:4"
                  },
                  "returnParameters": {
                    "id": 1403,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11962:0:4"
                  },
                  "scope": 1742,
                  "src": "11833:943:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1546,
                    "nodeType": "Block",
                    "src": "13035:200:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1528,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1526,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1518,
                                "src": "13053:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1527,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1520,
                                "src": "13062:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13053:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                              "id": 1529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13072:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              },
                              "value": "ERC1155: setting approval status for self"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                "typeString": "literal_string \"ERC1155: setting approval status for self\""
                              }
                            ],
                            "id": 1525,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13045:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13045:71:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1531,
                        "nodeType": "ExpressionStatement",
                        "src": "13045:71:4"
                      },
                      {
                        "expression": {
                          "id": 1538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1532,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 551,
                                "src": "13126:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1535,
                              "indexExpression": {
                                "id": 1533,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1518,
                                "src": "13145:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13126:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1536,
                            "indexExpression": {
                              "id": 1534,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1520,
                              "src": "13152:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13126:35:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1537,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1522,
                            "src": "13164:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13126:46:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1539,
                        "nodeType": "ExpressionStatement",
                        "src": "13126:46:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1541,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1518,
                              "src": "13202:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1542,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1520,
                              "src": "13209:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1543,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1522,
                              "src": "13219:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1540,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1785,
                            "src": "13187:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13187:41:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1545,
                        "nodeType": "EmitStatement",
                        "src": "13182:46:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1516,
                    "nodeType": "StructuredDocumentation",
                    "src": "12782:125:4",
                    "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."
                  },
                  "id": 1547,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setApprovalForAll",
                  "nameLocation": "12921:18:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1518,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "12957:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "12949:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1517,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12949:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1520,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "12980:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "12972:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1519,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12972:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1522,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "13003:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "12998:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1521,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12998:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12939:78:4"
                  },
                  "returnParameters": {
                    "id": 1524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13035:0:4"
                  },
                  "scope": 1742,
                  "src": "12912:323:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1565,
                    "nodeType": "Block",
                    "src": "14383:2:4",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1548,
                    "nodeType": "StructuredDocumentation",
                    "src": "13241:925:4",
                    "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `ids` and `amounts` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be  transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "14180:20:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1550,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "14218:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14210:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1549,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14210:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1552,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14244:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14236:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14236:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1554,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14266:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14258:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1553,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14258:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1557,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "14295:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14278:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1555,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14278:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1556,
                          "nodeType": "ArrayTypeName",
                          "src": "14278:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1560,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "14325:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14308:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1558,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14308:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1559,
                          "nodeType": "ArrayTypeName",
                          "src": "14308:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1562,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14355:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "14342:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1561,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14342:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14200:165:4"
                  },
                  "returnParameters": {
                    "id": 1564,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14383:0:4"
                  },
                  "scope": 1742,
                  "src": "14171:214:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1584,
                    "nodeType": "Block",
                    "src": "15529:2:4",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1567,
                    "nodeType": "StructuredDocumentation",
                    "src": "14391:922:4",
                    "text": " @dev Hook that is called after any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be  transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_afterTokenTransfer",
                  "nameLocation": "15327:19:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1569,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "15364:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15356:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15356:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1571,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "15390:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15382:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15382:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1573,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "15412:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15404:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15404:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1576,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "15441:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15424:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1574,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15424:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1575,
                          "nodeType": "ArrayTypeName",
                          "src": "15424:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1579,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "15471:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15454:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1577,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15454:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1578,
                          "nodeType": "ArrayTypeName",
                          "src": "15454:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1581,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15501:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1585,
                        "src": "15488:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1580,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15488:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15346:165:4"
                  },
                  "returnParameters": {
                    "id": 1583,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15529:0:4"
                  },
                  "scope": 1742,
                  "src": "15318:213:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1647,
                    "nodeType": "Block",
                    "src": "15730:532:4",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1600,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1591,
                              "src": "15744:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2362,
                            "src": "15744:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15744:15:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1646,
                        "nodeType": "IfStatement",
                        "src": "15740:516:4",
                        "trueBody": {
                          "id": 1645,
                          "nodeType": "Block",
                          "src": "15761:495:4",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 1627,
                                    "nodeType": "Block",
                                    "src": "15878:184:4",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 1620,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 1616,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1614,
                                            "src": "15900:8:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 1617,
                                                "name": "IERC1155Receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1905,
                                                "src": "15912:16:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1905_$",
                                                  "typeString": "type(contract IERC1155Receiver)"
                                                }
                                              },
                                              "id": 1618,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1886,
                                              "src": "15912:34:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC1155Receiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 1619,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "15912:43:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "15900:55:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 1626,
                                        "nodeType": "IfStatement",
                                        "src": "15896:152:4",
                                        "trueBody": {
                                          "id": 1625,
                                          "nodeType": "Block",
                                          "src": "15957:91:4",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                    "id": 1622,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "15986:42:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    },
                                                    "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    }
                                                  ],
                                                  "id": 1621,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "15979:6:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 1623,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15979:50:4",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 1624,
                                              "nodeType": "ExpressionStatement",
                                              "src": "15979:50:4"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1628,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1615,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1614,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "15868:8:4",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1628,
                                        "src": "15861:15:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 1613,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15861:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "15860:17:4"
                                  },
                                  "src": "15852:210:4"
                                },
                                {
                                  "block": {
                                    "id": 1636,
                                    "nodeType": "Block",
                                    "src": "16097:47:4",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 1633,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1630,
                                              "src": "16122:6:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 1632,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "16115:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 1634,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16115:14:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 1635,
                                        "nodeType": "ExpressionStatement",
                                        "src": "16115:14:4"
                                      }
                                    ]
                                  },
                                  "errorName": "Error",
                                  "id": 1637,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1631,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1630,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "16089:6:4",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1637,
                                        "src": "16075:20:4",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string"
                                        },
                                        "typeName": {
                                          "id": 1629,
                                          "name": "string",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16075:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "16074:22:4"
                                  },
                                  "src": "16063:81:4"
                                },
                                {
                                  "block": {
                                    "id": 1642,
                                    "nodeType": "Block",
                                    "src": "16151:95:4",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                              "id": 1639,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16176:54:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              },
                                              "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              }
                                            ],
                                            "id": 1638,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "16169:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 1640,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16169:62:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 1641,
                                        "nodeType": "ExpressionStatement",
                                        "src": "16169:62:4"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1643,
                                  "nodeType": "TryCatchClause",
                                  "src": "16145:101:4"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 1607,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1587,
                                    "src": "15818:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1608,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1589,
                                    "src": "15828:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1609,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1593,
                                    "src": "15834:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1610,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1595,
                                    "src": "15838:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1611,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1597,
                                    "src": "15846:4:4",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1604,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1591,
                                        "src": "15796:2:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1603,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1905,
                                      "src": "15779:16:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1905_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 1605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15779:20:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$1905",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 1606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1886,
                                  "src": "15779:38:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 1612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15779:72:4",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 1644,
                              "nodeType": "TryStatement",
                              "src": "15775:471:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 1648,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeTransferAcceptanceCheck",
                  "nameLocation": "15546:30:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1587,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "15594:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15586:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15586:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1589,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "15620:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15612:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15612:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1591,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "15642:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15634:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15634:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1593,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "15662:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15654:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15654:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1595,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "15682:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15674:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1594,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15674:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1597,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15711:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1648,
                        "src": "15698:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1596,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15698:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15576:145:4"
                  },
                  "returnParameters": {
                    "id": 1599,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15730:0:4"
                  },
                  "scope": 1742,
                  "src": "15537:725:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1712,
                    "nodeType": "Block",
                    "src": "16486:574:4",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1665,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1654,
                              "src": "16500:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2362,
                            "src": "16500:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16500:15:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1711,
                        "nodeType": "IfStatement",
                        "src": "16496:558:4",
                        "trueBody": {
                          "id": 1710,
                          "nodeType": "Block",
                          "src": "16517:537:4",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 1692,
                                    "nodeType": "Block",
                                    "src": "16671:189:4",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 1685,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 1681,
                                            "name": "response",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1679,
                                            "src": "16693:8:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 1682,
                                                "name": "IERC1155Receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1905,
                                                "src": "16705:16:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1905_$",
                                                  "typeString": "type(contract IERC1155Receiver)"
                                                }
                                              },
                                              "id": 1683,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1904,
                                              "src": "16705:39:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC1155Receiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 1684,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "16705:48:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "16693:60:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 1691,
                                        "nodeType": "IfStatement",
                                        "src": "16689:157:4",
                                        "trueBody": {
                                          "id": 1690,
                                          "nodeType": "Block",
                                          "src": "16755:91:4",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                    "id": 1687,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "16784:42:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    },
                                                    "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                      "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                    }
                                                  ],
                                                  "id": 1686,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "16777:6:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 1688,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16777:50:4",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 1689,
                                              "nodeType": "ExpressionStatement",
                                              "src": "16777:50:4"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1693,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1680,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1679,
                                        "mutability": "mutable",
                                        "name": "response",
                                        "nameLocation": "16648:8:4",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1693,
                                        "src": "16641:15:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 1678,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16641:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "16623:47:4"
                                  },
                                  "src": "16615:245:4"
                                },
                                {
                                  "block": {
                                    "id": 1701,
                                    "nodeType": "Block",
                                    "src": "16895:47:4",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 1698,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1695,
                                              "src": "16920:6:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 1697,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "16913:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 1699,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16913:14:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 1700,
                                        "nodeType": "ExpressionStatement",
                                        "src": "16913:14:4"
                                      }
                                    ]
                                  },
                                  "errorName": "Error",
                                  "id": 1702,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1696,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1695,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "16887:6:4",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1702,
                                        "src": "16873:20:4",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string"
                                        },
                                        "typeName": {
                                          "id": 1694,
                                          "name": "string",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16873:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "16872:22:4"
                                  },
                                  "src": "16861:81:4"
                                },
                                {
                                  "block": {
                                    "id": 1707,
                                    "nodeType": "Block",
                                    "src": "16949:95:4",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                              "id": 1704,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16974:54:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              },
                                              "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                              }
                                            ],
                                            "id": 1703,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "16967:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 1705,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16967:62:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 1706,
                                        "nodeType": "ExpressionStatement",
                                        "src": "16967:62:4"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1708,
                                  "nodeType": "TryCatchClause",
                                  "src": "16943:101:4"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "id": 1672,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1650,
                                    "src": "16579:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1673,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1652,
                                    "src": "16589:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1674,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1657,
                                    "src": "16595:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1675,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1660,
                                    "src": "16600:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1676,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1662,
                                    "src": "16609:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1669,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1654,
                                        "src": "16552:2:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1668,
                                      "name": "IERC1155Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1905,
                                      "src": "16535:16:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1905_$",
                                        "typeString": "type(contract IERC1155Receiver)"
                                      }
                                    },
                                    "id": 1670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16535:20:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155Receiver_$1905",
                                      "typeString": "contract IERC1155Receiver"
                                    }
                                  },
                                  "id": 1671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1904,
                                  "src": "16535:43:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 1677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16535:79:4",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 1709,
                              "nodeType": "TryStatement",
                              "src": "16531:513:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 1713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doSafeBatchTransferAcceptanceCheck",
                  "nameLocation": "16277:35:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1650,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "16330:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16322:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1649,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16322:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1652,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "16356:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16348:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16348:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1654,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "16378:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16370:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16370:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1657,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "16407:3:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16390:20:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1655,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16390:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1656,
                          "nodeType": "ArrayTypeName",
                          "src": "16390:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1660,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "16437:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16420:24:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1658,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16420:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1659,
                          "nodeType": "ArrayTypeName",
                          "src": "16420:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1662,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "16467:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1713,
                        "src": "16454:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1661,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16454:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16312:165:4"
                  },
                  "returnParameters": {
                    "id": 1664,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16486:0:4"
                  },
                  "scope": 1742,
                  "src": "16268:792:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1740,
                    "nodeType": "Block",
                    "src": "17150:109:4",
                    "statements": [
                      {
                        "assignments": [
                          1725
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1725,
                            "mutability": "mutable",
                            "name": "array",
                            "nameLocation": "17177:5:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1740,
                            "src": "17160:22:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1723,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17160:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1724,
                              "nodeType": "ArrayTypeName",
                              "src": "17160:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1731,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 1729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17199:1:4",
                              "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": 1728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17185:13:4",
                            "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": 1726,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17189:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1727,
                              "nodeType": "ArrayTypeName",
                              "src": "17189:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17185:16:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17160:41:4"
                      },
                      {
                        "expression": {
                          "id": 1736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1732,
                              "name": "array",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1725,
                              "src": "17211:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1734,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 1733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17217:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17211:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1735,
                            "name": "element",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1715,
                            "src": "17222:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17211:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1737,
                        "nodeType": "ExpressionStatement",
                        "src": "17211:18:4"
                      },
                      {
                        "expression": {
                          "id": 1738,
                          "name": "array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1725,
                          "src": "17247:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1720,
                        "id": 1739,
                        "nodeType": "Return",
                        "src": "17240:12:4"
                      }
                    ]
                  },
                  "id": 1741,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_asSingletonArray",
                  "nameLocation": "17075:17:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1716,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1715,
                        "mutability": "mutable",
                        "name": "element",
                        "nameLocation": "17101:7:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1741,
                        "src": "17093:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1714,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17093:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17092:17:4"
                  },
                  "returnParameters": {
                    "id": 1720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1719,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1741,
                        "src": "17132:16:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1717,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17132:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1718,
                          "nodeType": "ArrayTypeName",
                          "src": "17132:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17131:18:4"
                  },
                  "scope": 1742,
                  "src": "17066:193:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 1743,
              "src": "570:16691:4",
              "usedErrors": []
            }
          ],
          "src": "109:17153:4"
        },
        "id": 4
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              1864
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 1865,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1744,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "110:23:5"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 1745,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1865,
              "sourceUnit": 3485,
              "src": "135:47:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1747,
                    "name": "IERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3484,
                    "src": "372:7:5"
                  },
                  "id": 1748,
                  "nodeType": "InheritanceSpecifier",
                  "src": "372:7:5"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1746,
                "nodeType": "StructuredDocumentation",
                "src": "184:165:5",
                "text": " @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 1864,
              "linearizedBaseContracts": [
                1864,
                3484
              ],
              "name": "IERC1155",
              "nameLocation": "360:8:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1749,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:121:5",
                    "text": " @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."
                  },
                  "id": 1761,
                  "name": "TransferSingle",
                  "nameLocation": "518:14:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1760,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1751,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "549:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1761,
                        "src": "533:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "533:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1753,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "575:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1761,
                        "src": "559:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1752,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1755,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "597:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1761,
                        "src": "581:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1754,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "581:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1757,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "609:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1761,
                        "src": "601:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1756,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "601:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1759,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "621:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1761,
                        "src": "613:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "613:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "532:95:5"
                  },
                  "src": "512:116:5"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1762,
                    "nodeType": "StructuredDocumentation",
                    "src": "634:144:5",
                    "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."
                  },
                  "id": 1776,
                  "name": "TransferBatch",
                  "nameLocation": "789:13:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1764,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "828:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1776,
                        "src": "812:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1763,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1766,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "862:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1776,
                        "src": "846:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1765,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "846:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1768,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "892:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1776,
                        "src": "876:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1767,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "876:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1771,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "914:3:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1776,
                        "src": "904:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1769,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "904:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1770,
                          "nodeType": "ArrayTypeName",
                          "src": "904:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1774,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "937:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1776,
                        "src": "927:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1772,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "927:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1773,
                          "nodeType": "ArrayTypeName",
                          "src": "927:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "802:147:5"
                  },
                  "src": "783:167:5"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1777,
                    "nodeType": "StructuredDocumentation",
                    "src": "956:147:5",
                    "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."
                  },
                  "id": 1785,
                  "name": "ApprovalForAll",
                  "nameLocation": "1114:14:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1779,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1145:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1785,
                        "src": "1129:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1778,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1129:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1781,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1170:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1785,
                        "src": "1154:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1780,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1154:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1783,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "1185:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1785,
                        "src": "1180:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1782,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1180:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1128:66:5"
                  },
                  "src": "1108:87:5"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1786,
                    "nodeType": "StructuredDocumentation",
                    "src": "1201:343:5",
                    "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."
                  },
                  "id": 1792,
                  "name": "URI",
                  "nameLocation": "1555:3:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1788,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1566:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "1559:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1787,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1559:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1790,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1589:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "1573:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1573:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1558:34:5"
                  },
                  "src": "1549:44:5"
                },
                {
                  "documentation": {
                    "id": 1793,
                    "nodeType": "StructuredDocumentation",
                    "src": "1599:173:5",
                    "text": " @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 1802,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1786:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1795,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1804:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1802,
                        "src": "1796:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1796:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1797,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1821:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1802,
                        "src": "1813:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1813:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1795:29:5"
                  },
                  "returnParameters": {
                    "id": 1801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1800,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1802,
                        "src": "1848:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1848:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1847:9:5"
                  },
                  "scope": 1864,
                  "src": "1777:80:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1803,
                    "nodeType": "StructuredDocumentation",
                    "src": "1863:188:5",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 1815,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nameLocation": "2065:14:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1806,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nameLocation": "2099:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1815,
                        "src": "2080:27:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1804,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2080:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1805,
                          "nodeType": "ArrayTypeName",
                          "src": "2080:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1809,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2128:3:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1815,
                        "src": "2109:22:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1807,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2109:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1808,
                          "nodeType": "ArrayTypeName",
                          "src": "2109:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2079:53:5"
                  },
                  "returnParameters": {
                    "id": 1814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1813,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1815,
                        "src": "2180:16:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1811,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2180:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1812,
                          "nodeType": "ArrayTypeName",
                          "src": "2180:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2179:18:5"
                  },
                  "scope": 1864,
                  "src": "2056:142:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1816,
                    "nodeType": "StructuredDocumentation",
                    "src": "2204:248:5",
                    "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."
                  },
                  "functionSelector": "a22cb465",
                  "id": 1823,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "2466:17:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1818,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2492:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1823,
                        "src": "2484:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1817,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2484:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1820,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "2507:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1823,
                        "src": "2502:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1819,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2483:33:5"
                  },
                  "returnParameters": {
                    "id": 1822,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2525:0:5"
                  },
                  "scope": 1864,
                  "src": "2457:69:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1824,
                    "nodeType": "StructuredDocumentation",
                    "src": "2532:135:5",
                    "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1833,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "2681:16:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1826,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2706:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1833,
                        "src": "2698:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1825,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2698:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1828,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2723:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1833,
                        "src": "2715:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2715:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2697:35:5"
                  },
                  "returnParameters": {
                    "id": 1832,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1831,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1833,
                        "src": "2756:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1830,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2756:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2755:6:5"
                  },
                  "scope": 1864,
                  "src": "2672:90:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1834,
                    "nodeType": "StructuredDocumentation",
                    "src": "2768:556:5",
                    "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                  },
                  "functionSelector": "f242432a",
                  "id": 1847,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3338:16:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1836,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3372:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1847,
                        "src": "3364:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1835,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3364:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1838,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3394:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1847,
                        "src": "3386:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3386:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1840,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3414:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1847,
                        "src": "3406:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3406:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1842,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3434:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1847,
                        "src": "3426:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3426:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1844,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3465:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1847,
                        "src": "3450:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3450:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3354:121:5"
                  },
                  "returnParameters": {
                    "id": 1846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3484:0:5"
                  },
                  "scope": 1864,
                  "src": "3329:156:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1848,
                    "nodeType": "StructuredDocumentation",
                    "src": "3491:390:5",
                    "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 1863,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "3895:21:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1850,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3934:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "3926:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1849,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3926:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1852,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3956:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "3948:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1851,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3948:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1855,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "3987:3:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "3968:22:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1853,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3968:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1854,
                          "nodeType": "ArrayTypeName",
                          "src": "3968:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1858,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "4019:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "4000:26:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1856,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4000:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1857,
                          "nodeType": "ArrayTypeName",
                          "src": "4000:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1860,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4051:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "4036:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1859,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4036:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3916:145:5"
                  },
                  "returnParameters": {
                    "id": 1862,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4070:0:5"
                  },
                  "scope": 1864,
                  "src": "3886:185:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1865,
              "src": "350:3723:5",
              "usedErrors": []
            }
          ],
          "src": "110:3964:5"
        },
        "id": 5
      },
      "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
          "exportedSymbols": {
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 1906,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1866,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:6"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "../../utils/introspection/IERC165.sol",
              "id": 1867,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1906,
              "sourceUnit": 3485,
              "src": "143:47:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1869,
                    "name": "IERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3484,
                    "src": "262:7:6"
                  },
                  "id": 1870,
                  "nodeType": "InheritanceSpecifier",
                  "src": "262:7:6"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1868,
                "nodeType": "StructuredDocumentation",
                "src": "192:39:6",
                "text": " @dev _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 1905,
              "linearizedBaseContracts": [
                1905,
                3484
              ],
              "name": "IERC1155Receiver",
              "nameLocation": "242:16:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1871,
                    "nodeType": "StructuredDocumentation",
                    "src": "276:826:6",
                    "text": " @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 1886,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nameLocation": "1116:17:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1873,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1151:8:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1143:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1872,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1143:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1875,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1177:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1169:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1169:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1877,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1199:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1191:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1879,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1219:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1211:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1211:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1881,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1249:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1234:19:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1880,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1133:126:6"
                  },
                  "returnParameters": {
                    "id": 1885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1884,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1886,
                        "src": "1278:6:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1883,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:8:6"
                  },
                  "scope": 1905,
                  "src": "1107:179:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1887,
                    "nodeType": "StructuredDocumentation",
                    "src": "1292:994:6",
                    "text": " @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                  },
                  "functionSelector": "bc197c81",
                  "id": 1904,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nameLocation": "2300:22:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1889,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2340:8:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2332:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1888,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2332:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1891,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2366:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2358:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2358:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1894,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2399:3:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2380:22:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1892,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2380:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1893,
                          "nodeType": "ArrayTypeName",
                          "src": "2380:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1897,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "2431:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2412:25:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1895,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2412:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1896,
                          "nodeType": "ArrayTypeName",
                          "src": "2412:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1899,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2462:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2447:19:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1898,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2447:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2322:150:6"
                  },
                  "returnParameters": {
                    "id": 1903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1902,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2491:6:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1901,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2491:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2490:8:6"
                  },
                  "scope": 1905,
                  "src": "2291:208:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1906,
              "src": "232:2269:6",
              "usedErrors": []
            }
          ],
          "src": "118:2384:6"
        },
        "id": 6
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol",
          "exportedSymbols": {
            "Address": [
              2639
            ],
            "Context": [
              2661
            ],
            "ERC1155": [
              1742
            ],
            "ERC1155Burnable": [
              1974
            ],
            "ERC165": [
              3472
            ],
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 1975,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1907,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "128:23:7"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "file": "../ERC1155.sol",
              "id": 1908,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1975,
              "sourceUnit": 1743,
              "src": "153:24:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1910,
                    "name": "ERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1742,
                    "src": "394:7:7"
                  },
                  "id": 1911,
                  "nodeType": "InheritanceSpecifier",
                  "src": "394:7:7"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1909,
                "nodeType": "StructuredDocumentation",
                "src": "179:177:7",
                "text": " @dev Extension of {ERC1155} that allows token holders to destroy both their\n own tokens and those that they have been approved to use.\n _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 1974,
              "linearizedBaseContracts": [
                1974,
                1742,
                2146,
                1864,
                3472,
                3484,
                2661
              ],
              "name": "ERC1155Burnable",
              "nameLocation": "375:15:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1940,
                    "nodeType": "Block",
                    "src": "511:213:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1921,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1913,
                                  "src": "542:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1922,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "553:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "553:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "542:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1926,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1913,
                                    "src": "586:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1927,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "595:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 1928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "595:12:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1925,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 734,
                                  "src": "569:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 1929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "569:39:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "542:66:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 1931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "622:49:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              },
                              "value": "ERC1155: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 1920,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "521:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "521:160:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1933,
                        "nodeType": "ExpressionStatement",
                        "src": "521:160:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1935,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1913,
                              "src": "698:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1936,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1915,
                              "src": "707:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1937,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1917,
                              "src": "711:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1934,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1392,
                            "src": "692:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "692:25:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1939,
                        "nodeType": "ExpressionStatement",
                        "src": "692:25:7"
                      }
                    ]
                  },
                  "functionSelector": "f5298aca",
                  "id": 1941,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "417:4:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1913,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "439:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1941,
                        "src": "431:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "431:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1915,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "464:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1941,
                        "src": "456:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "456:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1917,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "484:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1941,
                        "src": "476:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "421:74:7"
                  },
                  "returnParameters": {
                    "id": 1919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "511:0:7"
                  },
                  "scope": 1974,
                  "src": "408:316:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1972,
                    "nodeType": "Block",
                    "src": "858:220:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1953,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1943,
                                  "src": "889:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1954,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "900:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "900:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "889:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1958,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1943,
                                    "src": "933:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1959,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "942:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 1960,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "942:12:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1957,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 734,
                                  "src": "916:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 1961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "916:39:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "889:66:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 1963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "969:49:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              },
                              "value": "ERC1155: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0398ed728bb0e096e3166d2c16e1078c0ca95e6b3fb31971215526318a2e5370",
                                "typeString": "literal_string \"ERC1155: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 1952,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "868:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "868:160:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1965,
                        "nodeType": "ExpressionStatement",
                        "src": "868:160:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1967,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1943,
                              "src": "1050:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1968,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1946,
                              "src": "1059:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1969,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1949,
                              "src": "1064:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1966,
                            "name": "_burnBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1515,
                            "src": "1039:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1039:32:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1971,
                        "nodeType": "ExpressionStatement",
                        "src": "1039:32:7"
                      }
                    ]
                  },
                  "functionSelector": "6b20c454",
                  "id": 1973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnBatch",
                  "nameLocation": "739:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1943,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "766:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1973,
                        "src": "758:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "758:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1946,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "800:3:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1973,
                        "src": "783:20:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1944,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "783:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1945,
                          "nodeType": "ArrayTypeName",
                          "src": "783:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1949,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "830:6:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1973,
                        "src": "813:23:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1947,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "813:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1948,
                          "nodeType": "ArrayTypeName",
                          "src": "813:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "748:94:7"
                  },
                  "returnParameters": {
                    "id": 1951,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "858:0:7"
                  },
                  "scope": 1974,
                  "src": "730:348:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 1975,
              "src": "357:723:7",
              "usedErrors": []
            }
          ],
          "src": "128:953:7"
        },
        "id": 7
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol",
          "exportedSymbols": {
            "Address": [
              2639
            ],
            "Context": [
              2661
            ],
            "ERC1155": [
              1742
            ],
            "ERC1155Supply": [
              2131
            ],
            "ERC165": [
              3472
            ],
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 2132,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1976,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "126:23:8"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "file": "../ERC1155.sol",
              "id": 1977,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2132,
              "sourceUnit": 1743,
              "src": "151:24:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1979,
                    "name": "ERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1742,
                    "src": "557:7:8"
                  },
                  "id": 1980,
                  "nodeType": "InheritanceSpecifier",
                  "src": "557:7:8"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1978,
                "nodeType": "StructuredDocumentation",
                "src": "177:344:8",
                "text": " @dev Extension of ERC1155 that adds tracking of total supply per id.\n Useful for scenarios where Fungible and Non-fungible tokens have to be\n clearly identified. Note: While a totalSupply of 1 might mean the\n corresponding is an NFT, there is no guarantees that no other token with the\n same id are not going to be minted."
              },
              "fullyImplemented": false,
              "id": 2131,
              "linearizedBaseContracts": [
                2131,
                1742,
                2146,
                1864,
                3472,
                3484,
                2661
              ],
              "name": "ERC1155Supply",
              "nameLocation": "540:13:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 1984,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "607:12:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 2131,
                  "src": "571:48:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 1983,
                    "keyType": {
                      "id": 1981,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "579:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "571:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 1982,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "590:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1996,
                    "nodeType": "Block",
                    "src": "768:40:8",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1992,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "785:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 1994,
                          "indexExpression": {
                            "id": 1993,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1987,
                            "src": "798:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "785:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1991,
                        "id": 1995,
                        "nodeType": "Return",
                        "src": "778:23:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1985,
                    "nodeType": "StructuredDocumentation",
                    "src": "626:66:8",
                    "text": " @dev Total amount of tokens in with a given id."
                  },
                  "functionSelector": "bd85b039",
                  "id": 1997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "706:11:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1987,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "726:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1997,
                        "src": "718:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1986,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "718:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "717:12:8"
                  },
                  "returnParameters": {
                    "id": 1991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1990,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1997,
                        "src": "759:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "758:9:8"
                  },
                  "scope": 2131,
                  "src": "697:111:8",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2012,
                    "nodeType": "Block",
                    "src": "964:57:8",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 2007,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2000,
                                "src": "1007:2:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2005,
                                "name": "ERC1155Supply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2131,
                                "src": "981:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155Supply_$2131_$",
                                  "typeString": "type(contract ERC1155Supply)"
                                }
                              },
                              "id": 2006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1997,
                              "src": "981:25:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 2008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "981:29:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1013:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "981:33:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2004,
                        "id": 2011,
                        "nodeType": "Return",
                        "src": "974:40:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1998,
                    "nodeType": "StructuredDocumentation",
                    "src": "814:82:8",
                    "text": " @dev Indicates whether any token exist with a given id, or not."
                  },
                  "functionSelector": "4f558e79",
                  "id": 2013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exists",
                  "nameLocation": "910:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2000,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "925:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2013,
                        "src": "917:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:12:8"
                  },
                  "returnParameters": {
                    "id": 2004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2003,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2013,
                        "src": "958:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2002,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:6:8"
                  },
                  "scope": 2131,
                  "src": "901:120:8",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1566
                  ],
                  "body": {
                    "id": 2129,
                    "nodeType": "Block",
                    "src": "1312:683:8",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2035,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2016,
                              "src": "1349:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2036,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2018,
                              "src": "1359:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2037,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2020,
                              "src": "1365:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2038,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2023,
                              "src": "1369:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2039,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2026,
                              "src": "1374:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2040,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2028,
                              "src": "1383:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2032,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1322:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ERC1155Supply_$2131_$",
                                "typeString": "type(contract super ERC1155Supply)"
                              }
                            },
                            "id": 2034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_beforeTokenTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1566,
                            "src": "1322:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 2041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1322:66:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2042,
                        "nodeType": "ExpressionStatement",
                        "src": "1322:66:8"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2043,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2018,
                            "src": "1403:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1419:1:8",
                                "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": 2045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1411:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2044,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1411:7:8",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1411:10:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1403:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2073,
                        "nodeType": "IfStatement",
                        "src": "1399:156:8",
                        "trueBody": {
                          "id": 2072,
                          "nodeType": "Block",
                          "src": "1423:132:8",
                          "statements": [
                            {
                              "body": {
                                "id": 2070,
                                "nodeType": "Block",
                                "src": "1478:67:8",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 2060,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1984,
                                          "src": "1496:12:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 2064,
                                        "indexExpression": {
                                          "baseExpression": {
                                            "id": 2061,
                                            "name": "ids",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2023,
                                            "src": "1509:3:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 2063,
                                          "indexExpression": {
                                            "id": 2062,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2050,
                                            "src": "1513:1:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1509:6:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1496:20:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "baseExpression": {
                                          "id": 2065,
                                          "name": "amounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2026,
                                          "src": "1520:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 2067,
                                        "indexExpression": {
                                          "id": 2066,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2050,
                                          "src": "1528:1:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1520:10:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1496:34:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2069,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1496:34:8"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2053,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2050,
                                  "src": "1457:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2054,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2023,
                                    "src": "1461:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1461:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1457:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2071,
                              "initializationExpression": {
                                "assignments": [
                                  2050
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2050,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nameLocation": "1450:1:8",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2071,
                                    "src": "1442:9:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 2049,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1442:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2052,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 2051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1454:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "1442:13:8"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 2058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": true,
                                  "src": "1473:3:8",
                                  "subExpression": {
                                    "id": 2057,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2050,
                                    "src": "1475:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2059,
                                "nodeType": "ExpressionStatement",
                                "src": "1473:3:8"
                              },
                              "nodeType": "ForStatement",
                              "src": "1437:108:8"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2074,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "1569:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1583:1:8",
                                "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": 2076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1575:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2075,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1575:7:8",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1575:10:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1569:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2128,
                        "nodeType": "IfStatement",
                        "src": "1565:424:8",
                        "trueBody": {
                          "id": 2127,
                          "nodeType": "Block",
                          "src": "1587:402:8",
                          "statements": [
                            {
                              "body": {
                                "id": 2125,
                                "nodeType": "Block",
                                "src": "1642:337:8",
                                "statements": [
                                  {
                                    "assignments": [
                                      2092
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2092,
                                        "mutability": "mutable",
                                        "name": "id",
                                        "nameLocation": "1668:2:8",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2125,
                                        "src": "1660:10:8",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2091,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1660:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2096,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 2093,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2023,
                                        "src": "1673:3:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 2095,
                                      "indexExpression": {
                                        "id": 2094,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2081,
                                        "src": "1677:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1673:6:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1660:19:8"
                                  },
                                  {
                                    "assignments": [
                                      2098
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2098,
                                        "mutability": "mutable",
                                        "name": "amount",
                                        "nameLocation": "1705:6:8",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2125,
                                        "src": "1697:14:8",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2097,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1697:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2102,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 2099,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2026,
                                        "src": "1714:7:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 2101,
                                      "indexExpression": {
                                        "id": 2100,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2081,
                                        "src": "1722:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1714:10:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1697:27:8"
                                  },
                                  {
                                    "assignments": [
                                      2104
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2104,
                                        "mutability": "mutable",
                                        "name": "supply",
                                        "nameLocation": "1750:6:8",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2125,
                                        "src": "1742:14:8",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2103,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1742:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2108,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 2105,
                                        "name": "_totalSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1984,
                                        "src": "1759:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 2107,
                                      "indexExpression": {
                                        "id": 2106,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2092,
                                        "src": "1772:2:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1759:16:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1742:33:8"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2112,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 2110,
                                            "name": "supply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2104,
                                            "src": "1801:6:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "id": 2111,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2098,
                                            "src": "1811:6:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1801:16:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "455243313135353a206275726e20616d6f756e74206578636565647320746f74616c537570706c79",
                                          "id": 2113,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1819:42:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4",
                                            "typeString": "literal_string \"ERC1155: burn amount exceeds totalSupply\""
                                          },
                                          "value": "ERC1155: burn amount exceeds totalSupply"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4",
                                            "typeString": "literal_string \"ERC1155: burn amount exceeds totalSupply\""
                                          }
                                        ],
                                        "id": 2109,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "1793:7:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 2114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1793:69:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1793:69:8"
                                  },
                                  {
                                    "id": 2124,
                                    "nodeType": "UncheckedBlock",
                                    "src": "1880:85:8",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2122,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 2116,
                                              "name": "_totalSupply",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1984,
                                              "src": "1912:12:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 2118,
                                            "indexExpression": {
                                              "id": 2117,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2092,
                                              "src": "1925:2:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1912:16:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2121,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 2119,
                                              "name": "supply",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2104,
                                              "src": "1931:6:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "id": 2120,
                                              "name": "amount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2098,
                                              "src": "1940:6:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1931:15:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1912:34:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2123,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1912:34:8"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2084,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2081,
                                  "src": "1621:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2085,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2023,
                                    "src": "1625:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1625:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1621:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2126,
                              "initializationExpression": {
                                "assignments": [
                                  2081
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2081,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nameLocation": "1614:1:8",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2126,
                                    "src": "1606:9:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 2080,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1606:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2083,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 2082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1618:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "1606:13:8"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 2089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": true,
                                  "src": "1637:3:8",
                                  "subExpression": {
                                    "id": 2088,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2081,
                                    "src": "1639:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2090,
                                "nodeType": "ExpressionStatement",
                                "src": "1637:3:8"
                              },
                              "nodeType": "ForStatement",
                              "src": "1601:378:8"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2014,
                    "nodeType": "StructuredDocumentation",
                    "src": "1027:59:8",
                    "text": " @dev See {ERC1155-_beforeTokenTransfer}."
                  },
                  "id": 2130,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "1100:20:8",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2030,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1303:8:8"
                  },
                  "parameters": {
                    "id": 2029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2016,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1138:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1130:16:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1130:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2018,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1164:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1156:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1156:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2020,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1186:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1178:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1178:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2023,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "1215:3:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1198:20:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2021,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1198:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2022,
                          "nodeType": "ArrayTypeName",
                          "src": "1198:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2026,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "1245:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1228:24:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2024,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1228:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2025,
                          "nodeType": "ArrayTypeName",
                          "src": "1228:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2028,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1275:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2130,
                        "src": "1262:17:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2027,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1262:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1120:165:8"
                  },
                  "returnParameters": {
                    "id": 2031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1312:0:8"
                  },
                  "scope": 2131,
                  "src": "1091:904:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2132,
              "src": "522:1475:8",
              "usedErrors": []
            }
          ],
          "src": "126:1872:8"
        },
        "id": 8
      },
      "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
          "exportedSymbols": {
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 2147,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2133,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "117:23:9"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
              "file": "../IERC1155.sol",
              "id": 2134,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2147,
              "sourceUnit": 1865,
              "src": "142:25:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2136,
                    "name": "IERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1864,
                    "src": "397:8:9"
                  },
                  "id": 2137,
                  "nodeType": "InheritanceSpecifier",
                  "src": "397:8:9"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2135,
                "nodeType": "StructuredDocumentation",
                "src": "169:194:9",
                "text": " @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"
              },
              "fullyImplemented": false,
              "id": 2146,
              "linearizedBaseContracts": [
                2146,
                1864,
                3484
              ],
              "name": "IERC1155MetadataURI",
              "nameLocation": "374:19:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2138,
                    "nodeType": "StructuredDocumentation",
                    "src": "412:192:9",
                    "text": " @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."
                  },
                  "functionSelector": "0e89341c",
                  "id": 2145,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "618:3:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2141,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2140,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "630:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2145,
                        "src": "622:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "622:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "621:12:9"
                  },
                  "returnParameters": {
                    "id": 2144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2143,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2145,
                        "src": "657:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2142,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "656:15:9"
                  },
                  "scope": 2146,
                  "src": "609:63:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2147,
              "src": "364:310:9",
              "usedErrors": []
            }
          ],
          "src": "117:558:9"
        },
        "id": 9
      },
      "@openzeppelin/contracts/token/common/ERC2981.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/common/ERC2981.sol",
          "exportedSymbols": {
            "ERC165": [
              3472
            ],
            "ERC2981": [
              2344
            ],
            "IERC165": [
              3484
            ],
            "IERC2981": [
              411
            ]
          },
          "id": 2345,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2148,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "108:23:10"
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC2981.sol",
              "file": "../../interfaces/IERC2981.sol",
              "id": 2149,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2345,
              "sourceUnit": 412,
              "src": "133:39:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
              "file": "../../utils/introspection/ERC165.sol",
              "id": 2150,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2345,
              "sourceUnit": 3473,
              "src": "173:46:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2152,
                    "name": "IERC2981",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 411,
                    "src": "1125:8:10"
                  },
                  "id": 2153,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1125:8:10"
                },
                {
                  "baseName": {
                    "id": 2154,
                    "name": "ERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3472,
                    "src": "1135:6:10"
                  },
                  "id": 2155,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1135:6:10"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2151,
                "nodeType": "StructuredDocumentation",
                "src": "221:874:10",
                "text": " @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.\n Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for\n specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.\n Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the\n fee is specified in basis points by default.\n IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See\n https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to\n voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.\n _Available since v4.5._"
              },
              "fullyImplemented": true,
              "id": 2344,
              "linearizedBaseContracts": [
                2344,
                3472,
                411,
                3484
              ],
              "name": "ERC2981",
              "nameLocation": "1114:7:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ERC2981.RoyaltyInfo",
                  "id": 2160,
                  "members": [
                    {
                      "constant": false,
                      "id": 2157,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nameLocation": "1185:8:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 2160,
                      "src": "1177:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2156,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1177:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2159,
                      "mutability": "mutable",
                      "name": "royaltyFraction",
                      "nameLocation": "1210:15:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 2160,
                      "src": "1203:22:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 2158,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "1203:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RoyaltyInfo",
                  "nameLocation": "1155:11:10",
                  "nodeType": "StructDefinition",
                  "scope": 2344,
                  "src": "1148:84:10",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 2163,
                  "mutability": "mutable",
                  "name": "_defaultRoyaltyInfo",
                  "nameLocation": "1258:19:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 2344,
                  "src": "1238:39:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                    "typeString": "struct ERC2981.RoyaltyInfo"
                  },
                  "typeName": {
                    "id": 2162,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2161,
                      "name": "RoyaltyInfo",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2160,
                      "src": "1238:11:10"
                    },
                    "referencedDeclaration": 2160,
                    "src": "1238:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage_ptr",
                      "typeString": "struct ERC2981.RoyaltyInfo"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2168,
                  "mutability": "mutable",
                  "name": "_tokenRoyaltyInfo",
                  "nameLocation": "1323:17:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 2344,
                  "src": "1283:57:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2160_storage_$",
                    "typeString": "mapping(uint256 => struct ERC2981.RoyaltyInfo)"
                  },
                  "typeName": {
                    "id": 2167,
                    "keyType": {
                      "id": 2164,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1291:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1283:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2160_storage_$",
                      "typeString": "mapping(uint256 => struct ERC2981.RoyaltyInfo)"
                    },
                    "valueType": {
                      "id": 2166,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2165,
                        "name": "RoyaltyInfo",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2160,
                        "src": "1302:11:10"
                      },
                      "referencedDeclaration": 2160,
                      "src": "1302:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage_ptr",
                        "typeString": "struct ERC2981.RoyaltyInfo"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    3471,
                    3483
                  ],
                  "body": {
                    "id": 2191,
                    "nodeType": "Block",
                    "src": "1516:105:10",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 2184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2179,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2171,
                              "src": "1533:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2181,
                                    "name": "IERC2981",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 411,
                                    "src": "1553:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981_$411_$",
                                      "typeString": "type(contract IERC2981)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981_$411_$",
                                      "typeString": "type(contract IERC2981)"
                                    }
                                  ],
                                  "id": 2180,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1548:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1548:14:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981_$411",
                                  "typeString": "type(contract IERC2981)"
                                }
                              },
                              "id": 2183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1548:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1533:41:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 2187,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2171,
                                "src": "1602:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 2185,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1578:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC2981_$2344_$",
                                  "typeString": "type(contract super ERC2981)"
                                }
                              },
                              "id": 2186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3471,
                              "src": "1578:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 2188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1578:36:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1533:81:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2178,
                        "id": 2190,
                        "nodeType": "Return",
                        "src": "1526:88:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2169,
                    "nodeType": "StructuredDocumentation",
                    "src": "1347:56:10",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 2192,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1417:17:10",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2175,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2173,
                        "name": "IERC165",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3484,
                        "src": "1484:7:10"
                      },
                      {
                        "id": 2174,
                        "name": "ERC165",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3472,
                        "src": "1493:6:10"
                      }
                    ],
                    "src": "1475:25:10"
                  },
                  "parameters": {
                    "id": 2172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2171,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "1442:11:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2192,
                        "src": "1435:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2170,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:20:10"
                  },
                  "returnParameters": {
                    "id": 2178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2177,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2192,
                        "src": "1510:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2176,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1510:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1509:6:10"
                  },
                  "scope": 2344,
                  "src": "1408:213:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    410
                  ],
                  "body": {
                    "id": 2241,
                    "nodeType": "Block",
                    "src": "1786:317:10",
                    "statements": [
                      {
                        "assignments": [
                          2207
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2207,
                            "mutability": "mutable",
                            "name": "royalty",
                            "nameLocation": "1815:7:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 2241,
                            "src": "1796:26:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                              "typeString": "struct ERC2981.RoyaltyInfo"
                            },
                            "typeName": {
                              "id": 2206,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2205,
                                "name": "RoyaltyInfo",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2160,
                                "src": "1796:11:10"
                              },
                              "referencedDeclaration": 2160,
                              "src": "1796:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage_ptr",
                                "typeString": "struct ERC2981.RoyaltyInfo"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2211,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2208,
                            "name": "_tokenRoyaltyInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2168,
                            "src": "1825:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2160_storage_$",
                              "typeString": "mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"
                            }
                          },
                          "id": 2210,
                          "indexExpression": {
                            "id": 2209,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2195,
                            "src": "1843:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1825:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                            "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1796:56:10"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2212,
                              "name": "royalty",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2207,
                              "src": "1867:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                                "typeString": "struct ERC2981.RoyaltyInfo memory"
                              }
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receiver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2157,
                            "src": "1867:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1895:1:10",
                                "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": 2215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1887:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2214,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1887:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1887:10:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1867:30:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2224,
                        "nodeType": "IfStatement",
                        "src": "1863:90:10",
                        "trueBody": {
                          "id": 2223,
                          "nodeType": "Block",
                          "src": "1899:54:10",
                          "statements": [
                            {
                              "expression": {
                                "id": 2221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2219,
                                  "name": "royalty",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2207,
                                  "src": "1913:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                                    "typeString": "struct ERC2981.RoyaltyInfo memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2220,
                                  "name": "_defaultRoyaltyInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2163,
                                  "src": "1923:19:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                                    "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                                  }
                                },
                                "src": "1913:29:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                                  "typeString": "struct ERC2981.RoyaltyInfo memory"
                                }
                              },
                              "id": 2222,
                              "nodeType": "ExpressionStatement",
                              "src": "1913:29:10"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2226,
                            "mutability": "mutable",
                            "name": "royaltyAmount",
                            "nameLocation": "1971:13:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 2241,
                            "src": "1963:21:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2225,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1963:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2235,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2227,
                                  "name": "_salePrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2197,
                                  "src": "1988:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2228,
                                    "name": "royalty",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2207,
                                    "src": "2001:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                                      "typeString": "struct ERC2981.RoyaltyInfo memory"
                                    }
                                  },
                                  "id": 2229,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "royaltyFraction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2159,
                                  "src": "2001:23:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "1988:36:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2231,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1987:38:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2232,
                              "name": "_feeDenominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2251,
                              "src": "2028:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint96_$",
                                "typeString": "function () pure returns (uint96)"
                              }
                            },
                            "id": 2233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2028:17:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "1987:58:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1963:82:10"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 2236,
                                "name": "royalty",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2207,
                                "src": "2064:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                                  "typeString": "struct ERC2981.RoyaltyInfo memory"
                                }
                              },
                              "id": 2237,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "receiver",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2157,
                              "src": "2064:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2238,
                              "name": "royaltyAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2226,
                              "src": "2082:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2239,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2063:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "functionReturnParameters": 2204,
                        "id": 2240,
                        "nodeType": "Return",
                        "src": "2056:40:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2193,
                    "nodeType": "StructuredDocumentation",
                    "src": "1627:39:10",
                    "text": " @inheritdoc IERC2981"
                  },
                  "functionSelector": "2a55205a",
                  "id": 2242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "1680:11:10",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2199,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1750:8:10"
                  },
                  "parameters": {
                    "id": 2198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2195,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "1700:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2242,
                        "src": "1692:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1692:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2197,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "1718:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2242,
                        "src": "1710:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2196,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1710:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1691:38:10"
                  },
                  "returnParameters": {
                    "id": 2204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2201,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2242,
                        "src": "1768:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1768:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2203,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2242,
                        "src": "1777:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1777:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1767:18:10"
                  },
                  "scope": 2344,
                  "src": "1671:432:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2250,
                    "nodeType": "Block",
                    "src": "2444:29:10",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3130303030",
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2461:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000_by_1",
                            "typeString": "int_const 10000"
                          },
                          "value": "10000"
                        },
                        "functionReturnParameters": 2247,
                        "id": 2249,
                        "nodeType": "Return",
                        "src": "2454:12:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2243,
                    "nodeType": "StructuredDocumentation",
                    "src": "2109:264:10",
                    "text": " @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a\n fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an\n override."
                  },
                  "id": 2251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_feeDenominator",
                  "nameLocation": "2387:15:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2402:2:10"
                  },
                  "returnParameters": {
                    "id": 2247,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2246,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2251,
                        "src": "2436:6:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 2245,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2436:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2435:8:10"
                  },
                  "scope": 2344,
                  "src": "2378:95:10",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2284,
                    "nodeType": "Block",
                    "src": "2818:243:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 2263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2260,
                                "name": "feeNumerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2256,
                                "src": "2836:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2261,
                                  "name": "_feeDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2251,
                                  "src": "2852:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint96_$",
                                    "typeString": "function () pure returns (uint96)"
                                  }
                                },
                                "id": 2262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2852:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "2836:33:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243323938313a20726f79616c7479206665652077696c6c206578636565642073616c655072696365",
                              "id": 2264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2871:44:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d",
                                "typeString": "literal_string \"ERC2981: royalty fee will exceed salePrice\""
                              },
                              "value": "ERC2981: royalty fee will exceed salePrice"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d",
                                "typeString": "literal_string \"ERC2981: royalty fee will exceed salePrice\""
                              }
                            ],
                            "id": 2259,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2828:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2828:88:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2266,
                        "nodeType": "ExpressionStatement",
                        "src": "2828:88:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2268,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2254,
                                "src": "2934:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2954:1:10",
                                    "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": 2270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2946:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2269,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2946:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2946:10:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2934:22:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243323938313a20696e76616c6964207265636569766572",
                              "id": 2274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2958:27:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff",
                                "typeString": "literal_string \"ERC2981: invalid receiver\""
                              },
                              "value": "ERC2981: invalid receiver"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f66a1010ca1024f054dcd95a016427c9d452e7f1ceb553ccd3a5e37073a6ffff",
                                "typeString": "literal_string \"ERC2981: invalid receiver\""
                              }
                            ],
                            "id": 2267,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2926:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2926:60:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2276,
                        "nodeType": "ExpressionStatement",
                        "src": "2926:60:10"
                      },
                      {
                        "expression": {
                          "id": 2282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2277,
                            "name": "_defaultRoyaltyInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2163,
                            "src": "2997:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                              "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2279,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2254,
                                "src": "3031:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2280,
                                "name": "feeNumerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2256,
                                "src": "3041:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "id": 2278,
                              "name": "RoyaltyInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2160,
                              "src": "3019:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RoyaltyInfo_$2160_storage_ptr_$",
                                "typeString": "type(struct ERC2981.RoyaltyInfo storage pointer)"
                              }
                            },
                            "id": 2281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3019:35:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                              "typeString": "struct ERC2981.RoyaltyInfo memory"
                            }
                          },
                          "src": "2997:57:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                            "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                          }
                        },
                        "id": 2283,
                        "nodeType": "ExpressionStatement",
                        "src": "2997:57:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2252,
                    "nodeType": "StructuredDocumentation",
                    "src": "2479:250:10",
                    "text": " @dev Sets the royalty information that all ids in this contract will default to.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."
                  },
                  "id": 2285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setDefaultRoyalty",
                  "nameLocation": "2743:18:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2254,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "2770:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2285,
                        "src": "2762:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2762:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2256,
                        "mutability": "mutable",
                        "name": "feeNumerator",
                        "nameLocation": "2787:12:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2285,
                        "src": "2780:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 2255,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2780:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2761:39:10"
                  },
                  "returnParameters": {
                    "id": 2258,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2818:0:10"
                  },
                  "scope": 2344,
                  "src": "2734:327:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2292,
                    "nodeType": "Block",
                    "src": "3182:43:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 2290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3192:26:10",
                          "subExpression": {
                            "id": 2289,
                            "name": "_defaultRoyaltyInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2163,
                            "src": "3199:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                              "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2291,
                        "nodeType": "ExpressionStatement",
                        "src": "3192:26:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2286,
                    "nodeType": "StructuredDocumentation",
                    "src": "3067:60:10",
                    "text": " @dev Removes default royalty information."
                  },
                  "id": 2293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deleteDefaultRoyalty",
                  "nameLocation": "3141:21:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2287,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3162:2:10"
                  },
                  "returnParameters": {
                    "id": 2288,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3182:0:10"
                  },
                  "scope": 2344,
                  "src": "3132:93:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2330,
                    "nodeType": "Block",
                    "src": "3624:252:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2304,
                                "name": "feeNumerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2300,
                                "src": "3642:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2305,
                                  "name": "_feeDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2251,
                                  "src": "3658:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint96_$",
                                    "typeString": "function () pure returns (uint96)"
                                  }
                                },
                                "id": 2306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3658:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "3642:33:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243323938313a20726f79616c7479206665652077696c6c206578636565642073616c655072696365",
                              "id": 2308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3677:44:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d",
                                "typeString": "literal_string \"ERC2981: royalty fee will exceed salePrice\""
                              },
                              "value": "ERC2981: royalty fee will exceed salePrice"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dcda5bd52710522f2cc94635314fdacbfec7cf9b64adb69f4a07b374f938990d",
                                "typeString": "literal_string \"ERC2981: royalty fee will exceed salePrice\""
                              }
                            ],
                            "id": 2303,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3634:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3634:88:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2310,
                        "nodeType": "ExpressionStatement",
                        "src": "3634:88:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2312,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "3740:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3760:1:10",
                                    "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": 2314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3752:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2313,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3752:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3752:10:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3740:22:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243323938313a20496e76616c696420706172616d6574657273",
                              "id": 2318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3764:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d20a09dd8b4080dbbc254e38d9f607ef83a2c7a38b671ae8f8f162ffe46e2084",
                                "typeString": "literal_string \"ERC2981: Invalid parameters\""
                              },
                              "value": "ERC2981: Invalid parameters"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d20a09dd8b4080dbbc254e38d9f607ef83a2c7a38b671ae8f8f162ffe46e2084",
                                "typeString": "literal_string \"ERC2981: Invalid parameters\""
                              }
                            ],
                            "id": 2311,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3732:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3732:62:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2320,
                        "nodeType": "ExpressionStatement",
                        "src": "3732:62:10"
                      },
                      {
                        "expression": {
                          "id": 2328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2321,
                              "name": "_tokenRoyaltyInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "3805:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2160_storage_$",
                                "typeString": "mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"
                              }
                            },
                            "id": 2323,
                            "indexExpression": {
                              "id": 2322,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2296,
                              "src": "3823:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3805:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                              "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2325,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "3846:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2326,
                                "name": "feeNumerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2300,
                                "src": "3856:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "id": 2324,
                              "name": "RoyaltyInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2160,
                              "src": "3834:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RoyaltyInfo_$2160_storage_ptr_$",
                                "typeString": "type(struct ERC2981.RoyaltyInfo storage pointer)"
                              }
                            },
                            "id": 2327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3834:35:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_memory_ptr",
                              "typeString": "struct ERC2981.RoyaltyInfo memory"
                            }
                          },
                          "src": "3805:64:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                            "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                          }
                        },
                        "id": 2329,
                        "nodeType": "ExpressionStatement",
                        "src": "3805:64:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2294,
                    "nodeType": "StructuredDocumentation",
                    "src": "3231:259:10",
                    "text": " @dev Sets the royalty information for a specific token id, overriding the global default.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."
                  },
                  "id": 2331,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setTokenRoyalty",
                  "nameLocation": "3504:16:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2296,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3538:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2331,
                        "src": "3530:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3530:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2298,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3563:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2331,
                        "src": "3555:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3555:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2300,
                        "mutability": "mutable",
                        "name": "feeNumerator",
                        "nameLocation": "3588:12:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2331,
                        "src": "3581:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 2299,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3581:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3520:86:10"
                  },
                  "returnParameters": {
                    "id": 2302,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3624:0:10"
                  },
                  "scope": 2344,
                  "src": "3495:381:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2342,
                    "nodeType": "Block",
                    "src": "4044:50:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 2340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4054:33:10",
                          "subExpression": {
                            "baseExpression": {
                              "id": 2337,
                              "name": "_tokenRoyaltyInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "4061:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2160_storage_$",
                                "typeString": "mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"
                              }
                            },
                            "id": 2339,
                            "indexExpression": {
                              "id": 2338,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2334,
                              "src": "4079:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4061:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RoyaltyInfo_$2160_storage",
                              "typeString": "struct ERC2981.RoyaltyInfo storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2341,
                        "nodeType": "ExpressionStatement",
                        "src": "4054:33:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2332,
                    "nodeType": "StructuredDocumentation",
                    "src": "3882:95:10",
                    "text": " @dev Resets royalty information for the token id back to the global default."
                  },
                  "id": 2343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_resetTokenRoyalty",
                  "nameLocation": "3991:18:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2334,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4018:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2343,
                        "src": "4010:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4010:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4009:17:10"
                  },
                  "returnParameters": {
                    "id": 2336,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4044:0:10"
                  },
                  "scope": 2344,
                  "src": "3982:112:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2345,
              "src": "1096:3000:10",
              "usedErrors": []
            }
          ],
          "src": "108:3989:10"
        },
        "id": 10
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              2639
            ]
          },
          "id": 2640,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2346,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2347,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:11",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 2639,
              "linearizedBaseContracts": [
                2639
              ],
              "name": "Address",
              "nameLocation": "202:7:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2361,
                    "nodeType": "Block",
                    "src": "1241:254:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 2355,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2350,
                                "src": "1465:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1465:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1465:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1487:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1465:23:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2354,
                        "id": 2360,
                        "nodeType": "Return",
                        "src": "1458:30:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2348,
                    "nodeType": "StructuredDocumentation",
                    "src": "216: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": 2362,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1184:10:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2350,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1203:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2362,
                        "src": "1195:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:17:11"
                  },
                  "returnParameters": {
                    "id": 2354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2353,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2362,
                        "src": "1235:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2352,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1234:6:11"
                  },
                  "scope": 2639,
                  "src": "1175:320:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2395,
                    "nodeType": "Block",
                    "src": "2483:241:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2373,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2509:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$2639",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$2639",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 2372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2501:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2371,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2501:7:11",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2501:13:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2501:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2376,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2367,
                                "src": "2526:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2501:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 2378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2534: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": 2370,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2493:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2380,
                        "nodeType": "ExpressionStatement",
                        "src": "2493:73:11"
                      },
                      {
                        "assignments": [
                          2382,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2382,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2583:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2395,
                            "src": "2578:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2381,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 2389,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 2387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2626: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": 2383,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2365,
                                "src": "2596:9:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 2384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2596: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": 2386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 2385,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2367,
                                "src": "2618:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2596: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": 2388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2596:33:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2577:52:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2391,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2382,
                              "src": "2647:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 2392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2656: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": 2390,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2639:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2639:78:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2394,
                        "nodeType": "ExpressionStatement",
                        "src": "2639:78:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2363,
                    "nodeType": "StructuredDocumentation",
                    "src": "1501: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": 2396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2421:9:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2365,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2447:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "2431:25:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2364,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:15:11",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2367,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2466:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "2458:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2366,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2458:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:43:11"
                  },
                  "returnParameters": {
                    "id": 2369,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:11"
                  },
                  "scope": 2639,
                  "src": "2412:312:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2412,
                    "nodeType": "Block",
                    "src": "3555:84:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2407,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2399,
                              "src": "3585:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2408,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2401,
                              "src": "3593:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 2409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3599: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": 2406,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2413,
                              2433
                            ],
                            "referencedDeclaration": 2433,
                            "src": "3572: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": 2410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3572:60:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2405,
                        "id": 2411,
                        "nodeType": "Return",
                        "src": "3565:67:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2397,
                    "nodeType": "StructuredDocumentation",
                    "src": "2730: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": 2413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3475:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2399,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3496:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2413,
                        "src": "3488:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3488:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2401,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3517:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2413,
                        "src": "3504:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2400,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3504:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:35:11"
                  },
                  "returnParameters": {
                    "id": 2405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2404,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2413,
                        "src": "3541:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2403,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3541:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3540:14:11"
                  },
                  "scope": 2639,
                  "src": "3466:173:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2432,
                    "nodeType": "Block",
                    "src": "4008:76:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2426,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2416,
                              "src": "4047:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2427,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2418,
                              "src": "4055:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 2428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4061:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 2429,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "4064: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": 2425,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2453,
                              2503
                            ],
                            "referencedDeclaration": 2503,
                            "src": "4025: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": 2430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4025:52:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2424,
                        "id": 2431,
                        "nodeType": "Return",
                        "src": "4018:59:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2414,
                    "nodeType": "StructuredDocumentation",
                    "src": "3645: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": 2433,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3870:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2416,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3900:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2433,
                        "src": "3892:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2415,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3892:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2418,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3929:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2433,
                        "src": "3916:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2417,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3916:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2420,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3957:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2433,
                        "src": "3943:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2419,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3943:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3882:93:11"
                  },
                  "returnParameters": {
                    "id": 2424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2423,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2433,
                        "src": "3994:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2422,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3994:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3993:14:11"
                  },
                  "scope": 2639,
                  "src": "3861:223:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2452,
                    "nodeType": "Block",
                    "src": "4589:111:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2446,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "4628:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2447,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2438,
                              "src": "4636:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2448,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2440,
                              "src": "4642:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 2449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4649: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": 2445,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2453,
                              2503
                            ],
                            "referencedDeclaration": 2503,
                            "src": "4606: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": 2450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4606:87:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2444,
                        "id": 2451,
                        "nodeType": "Return",
                        "src": "4599:94:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2434,
                    "nodeType": "StructuredDocumentation",
                    "src": "4090: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": 2453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4455:21:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2436,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4494:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "4486:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4486:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2438,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4523:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "4510:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2437,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2440,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4545:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "4537:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4537:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4476:80:11"
                  },
                  "returnParameters": {
                    "id": 2444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2453,
                        "src": "4575:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4575:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4574:14:11"
                  },
                  "scope": 2639,
                  "src": "4446:254:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2502,
                    "nodeType": "Block",
                    "src": "5127:320:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2470,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5153:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$2639",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$2639",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 2469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5145:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2468,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5145:7:11",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5145:13:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5145:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2473,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2460,
                                "src": "5170:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5145:30:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 2475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5177: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": 2467,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5137:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5137:81:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2477,
                        "nodeType": "ExpressionStatement",
                        "src": "5137:81:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2480,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2456,
                                  "src": "5247:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2479,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2362,
                                "src": "5236:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5236:18:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5256: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": 2478,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5228:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5228:60:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2484,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:60:11"
                      },
                      {
                        "assignments": [
                          2486,
                          2488
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2486,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5305:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2502,
                            "src": "5300:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2485,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5300:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2488,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5327:10:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2502,
                            "src": "5314:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2487,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5314:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2495,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2493,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "5367: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": 2489,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2456,
                                "src": "5341:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5341: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": 2492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 2491,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2460,
                                "src": "5360:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5341: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": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5341:31:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5299:73:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2497,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2486,
                              "src": "5406:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2498,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2488,
                              "src": "5415:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2499,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2462,
                              "src": "5427: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": 2496,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2638,
                            "src": "5389: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": 2500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:51:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2466,
                        "id": 2501,
                        "nodeType": "Return",
                        "src": "5382:58:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2454,
                    "nodeType": "StructuredDocumentation",
                    "src": "4706: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": 2503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4957:21:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2456,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4996:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "4988:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4988:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2458,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5025:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "5012:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2457,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5012:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2460,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5047:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "5039:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5039:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2462,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5076:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "5062:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2461,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5062:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4978:116:11"
                  },
                  "returnParameters": {
                    "id": 2466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2465,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "5113:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2464,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5112:14:11"
                  },
                  "scope": 2639,
                  "src": "4948:499:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2519,
                    "nodeType": "Block",
                    "src": "5724:97:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2514,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2506,
                              "src": "5760:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2515,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2508,
                              "src": "5768:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 2516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5774: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": 2513,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2520,
                              2555
                            ],
                            "referencedDeclaration": 2555,
                            "src": "5741: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": 2517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5741:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2512,
                        "id": 2518,
                        "nodeType": "Return",
                        "src": "5734:80:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2504,
                    "nodeType": "StructuredDocumentation",
                    "src": "5453:166:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 2520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5633:18:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2506,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5660:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2520,
                        "src": "5652:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5652:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2508,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5681:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2520,
                        "src": "5668:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2507,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5668:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5651:35:11"
                  },
                  "returnParameters": {
                    "id": 2512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2511,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2520,
                        "src": "5710:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2510,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5710:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5709:14:11"
                  },
                  "scope": 2639,
                  "src": "5624:197:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2554,
                    "nodeType": "Block",
                    "src": "6163:228:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2534,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2523,
                                  "src": "6192:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2533,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2362,
                                "src": "6181:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6181:18:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2536,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6201: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": 2532,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6173:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6173:67:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2538,
                        "nodeType": "ExpressionStatement",
                        "src": "6173:67:11"
                      },
                      {
                        "assignments": [
                          2540,
                          2542
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2540,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6257:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "6252:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2539,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6252:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2542,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6279:10:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "6266:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2541,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6266:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2547,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2545,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2525,
                              "src": "6311:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2543,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2523,
                              "src": "6293:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6293: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": 2546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6293:23:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6251:65:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2549,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2540,
                              "src": "6350:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2550,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2542,
                              "src": "6359:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2551,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2527,
                              "src": "6371: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": 2548,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2638,
                            "src": "6333: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": 2552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6333:51:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2531,
                        "id": 2553,
                        "nodeType": "Return",
                        "src": "6326:58:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2521,
                    "nodeType": "StructuredDocumentation",
                    "src": "5827: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": 2555,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6014:18:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2523,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6050:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "6042:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6042:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2525,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6079:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "6066:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2524,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6066:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2527,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6107:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "6093:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2526,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6032:93:11"
                  },
                  "returnParameters": {
                    "id": 2531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2530,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "6149:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2529,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6149:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6148:14:11"
                  },
                  "scope": 2639,
                  "src": "6005:386:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2571,
                    "nodeType": "Block",
                    "src": "6667:101:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2566,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2558,
                              "src": "6705:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2567,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2560,
                              "src": "6713:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                              "id": 2568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6719:41:11",
                              "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": 2565,
                            "name": "functionDelegateCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2572,
                              2607
                            ],
                            "referencedDeclaration": 2607,
                            "src": "6684:20: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": 2569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:77:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2564,
                        "id": 2570,
                        "nodeType": "Return",
                        "src": "6677:84:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2556,
                    "nodeType": "StructuredDocumentation",
                    "src": "6397:168:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 2572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6579:20:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2558,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6608:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "6600:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6600:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2560,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6629:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "6616:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2559,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6616:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6599:35:11"
                  },
                  "returnParameters": {
                    "id": 2564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2563,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "6653:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2562,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6653:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6652:14:11"
                  },
                  "scope": 2639,
                  "src": "6570:198:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2606,
                    "nodeType": "Block",
                    "src": "7109:232:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2586,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2575,
                                  "src": "7138:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2585,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2362,
                                "src": "7127:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7127:18:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7147:40:11",
                              "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": 2584,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7119:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7119:69:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2590,
                        "nodeType": "ExpressionStatement",
                        "src": "7119:69:11"
                      },
                      {
                        "assignments": [
                          2592,
                          2594
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2592,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "7205:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2606,
                            "src": "7200:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2591,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7200:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2594,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "7227:10:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2606,
                            "src": "7214:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2593,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7214:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2599,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2597,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2577,
                              "src": "7261:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2595,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2575,
                              "src": "7241:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "7241:19:11",
                            "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": 2598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7241:25:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7199:67:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2601,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2592,
                              "src": "7300:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2602,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2594,
                              "src": "7309:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2603,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2579,
                              "src": "7321: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": 2600,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2638,
                            "src": "7283: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": 2604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7283:51:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2583,
                        "id": 2605,
                        "nodeType": "Return",
                        "src": "7276:58:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2573,
                    "nodeType": "StructuredDocumentation",
                    "src": "6774:175:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 2607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6963:20:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2575,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "7001:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "6993:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6993:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2577,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7030:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "7017:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2576,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7017:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2579,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7058:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "7044:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2578,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7044:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6983:93:11"
                  },
                  "returnParameters": {
                    "id": 2583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2607,
                        "src": "7095:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2581,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7094:14:11"
                  },
                  "scope": 2639,
                  "src": "6954:387:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2637,
                    "nodeType": "Block",
                    "src": "7721:582:11",
                    "statements": [
                      {
                        "condition": {
                          "id": 2619,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2610,
                          "src": "7735:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2635,
                          "nodeType": "Block",
                          "src": "7792:505:11",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2623,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2612,
                                    "src": "7876:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "7876:17:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7896:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7876:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2633,
                                "nodeType": "Block",
                                "src": "8234:53:11",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2630,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2614,
                                          "src": "8259:12:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 2629,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "8252:6:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 2631,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8252:20:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2632,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8252:20:11"
                                  }
                                ]
                              },
                              "id": 2634,
                              "nodeType": "IfStatement",
                              "src": "7872:415:11",
                              "trueBody": {
                                "id": 2628,
                                "nodeType": "Block",
                                "src": "7899:329:11",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "8069:145:11",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "8091:40:11",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "8120:10:11"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "8114:5:11"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8114:17:11"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "8095:15:11",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8163:2:11",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8167:10:11"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8159:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8159:19:11"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "8180:15:11"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "8152:6:11"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8152:44:11"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "8152:44:11"
                                        }
                                      ]
                                    },
                                    "documentation": "@solidity memory-safe-assembly",
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                      {
                                        "declaration": 2612,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8120:10:11",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 2612,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8167:10:11",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 2627,
                                    "nodeType": "InlineAssembly",
                                    "src": "8060:154:11"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2636,
                        "nodeType": "IfStatement",
                        "src": "7731:566:11",
                        "trueBody": {
                          "id": 2622,
                          "nodeType": "Block",
                          "src": "7744:42:11",
                          "statements": [
                            {
                              "expression": {
                                "id": 2620,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2612,
                                "src": "7765:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 2618,
                              "id": 2621,
                              "nodeType": "Return",
                              "src": "7758:17:11"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2608,
                    "nodeType": "StructuredDocumentation",
                    "src": "7347: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": 2638,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "7570:16:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2610,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "7601:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2638,
                        "src": "7596:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2609,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2612,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "7631:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2638,
                        "src": "7618:23:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2611,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2614,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7665:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2638,
                        "src": "7651:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2613,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7651:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7586:97:11"
                  },
                  "returnParameters": {
                    "id": 2618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2617,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2638,
                        "src": "7707:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2616,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7707:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7706:14:11"
                  },
                  "scope": 2639,
                  "src": "7561:742:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2640,
              "src": "194:8111:11",
              "usedErrors": []
            }
          ],
          "src": "101:8205:11"
        },
        "id": 11
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              2661
            ]
          },
          "id": 2662,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2641,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:12"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2642,
                "nodeType": "StructuredDocumentation",
                "src": "111: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": 2661,
              "linearizedBaseContracts": [
                2661
              ],
              "name": "Context",
              "nameLocation": "626:7:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2650,
                    "nodeType": "Block",
                    "src": "702:34:12",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2647,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "719:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "719:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2646,
                        "id": 2649,
                        "nodeType": "Return",
                        "src": "712:17:12"
                      }
                    ]
                  },
                  "id": 2651,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "649:10:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2643,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:2:12"
                  },
                  "returnParameters": {
                    "id": 2646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2645,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2651,
                        "src": "693:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2644,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "693:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "692:9:12"
                  },
                  "scope": 2661,
                  "src": "640:96:12",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2659,
                    "nodeType": "Block",
                    "src": "809:32:12",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2656,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "826:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "826:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 2655,
                        "id": 2658,
                        "nodeType": "Return",
                        "src": "819:15:12"
                      }
                    ]
                  },
                  "id": 2660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "751:8:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "759:2:12"
                  },
                  "returnParameters": {
                    "id": 2655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2654,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2660,
                        "src": "793:14:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2653,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:16:12"
                  },
                  "scope": 2661,
                  "src": "742:99:12",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2662,
              "src": "608:235:12",
              "usedErrors": []
            }
          ],
          "src": "86:758:12"
        },
        "id": 12
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
          "exportedSymbols": {
            "Strings": [
              2887
            ]
          },
          "id": 2888,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2663,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2664,
                "nodeType": "StructuredDocumentation",
                "src": "126:34:13",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 2887,
              "linearizedBaseContracts": [
                2887
              ],
              "name": "Strings",
              "nameLocation": "169:7:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 2667,
                  "mutability": "constant",
                  "name": "_HEX_SYMBOLS",
                  "nameLocation": "208:12:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 2887,
                  "src": "183:58:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 2665,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "183:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 2666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "223:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 2670,
                  "mutability": "constant",
                  "name": "_ADDRESS_LENGTH",
                  "nameLocation": "270:15:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 2887,
                  "src": "247:43:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2668,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3230",
                    "id": 2669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "288:2:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20_by_1",
                      "typeString": "int_const 20"
                    },
                    "value": "20"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2748,
                    "nodeType": "Block",
                    "src": "463:632:13",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2678,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2673,
                            "src": "665:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "674:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "665:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2684,
                        "nodeType": "IfStatement",
                        "src": "661:51:13",
                        "trueBody": {
                          "id": 2683,
                          "nodeType": "Block",
                          "src": "677:35:13",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 2681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "698:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 2677,
                              "id": 2682,
                              "nodeType": "Return",
                              "src": "691:10:13"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2686
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2686,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "729:4:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2748,
                            "src": "721:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2685,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "721:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2688,
                        "initialValue": {
                          "id": 2687,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2673,
                          "src": "736:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "721:20:13"
                      },
                      {
                        "assignments": [
                          2690
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2690,
                            "mutability": "mutable",
                            "name": "digits",
                            "nameLocation": "759:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2748,
                            "src": "751:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2689,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "751:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2691,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "751:14:13"
                      },
                      {
                        "body": {
                          "id": 2702,
                          "nodeType": "Block",
                          "src": "793:57:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "807:8:13",
                                "subExpression": {
                                  "id": 2695,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2690,
                                  "src": "807:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2697,
                              "nodeType": "ExpressionStatement",
                              "src": "807:8:13"
                            },
                            {
                              "expression": {
                                "id": 2700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2698,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2686,
                                  "src": "829:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "837:2:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "829:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2701,
                              "nodeType": "ExpressionStatement",
                              "src": "829:10:13"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2692,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "782:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "790:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "782:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2703,
                        "nodeType": "WhileStatement",
                        "src": "775:75:13"
                      },
                      {
                        "assignments": [
                          2705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2705,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "872:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2748,
                            "src": "859:19:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2704,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "859:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2710,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2708,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2690,
                              "src": "891:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "881:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2706,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "885:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "881:17:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "859:39:13"
                      },
                      {
                        "body": {
                          "id": 2741,
                          "nodeType": "Block",
                          "src": "927:131:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2714,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2690,
                                  "src": "941:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "951:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "941:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2717,
                              "nodeType": "ExpressionStatement",
                              "src": "941:11:13"
                            },
                            {
                              "expression": {
                                "id": 2735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2718,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2705,
                                    "src": "966:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2720,
                                  "indexExpression": {
                                    "id": 2719,
                                    "name": "digits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2690,
                                    "src": "973:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "966:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2732,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 2725,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "996:2:13",
                                            "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": 2730,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 2728,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2673,
                                                  "src": "1009:5:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 2729,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "1017:2:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "1009:10:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2727,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1001:7:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 2726,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1001:7:13",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2731,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1001:19:13",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "996:24:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2724,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "990:5:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 2723,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "990:5:13",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2733,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "990:31:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 2722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "983:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 2721,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "983:6:13",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "983:39:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "966:56:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 2736,
                              "nodeType": "ExpressionStatement",
                              "src": "966:56:13"
                            },
                            {
                              "expression": {
                                "id": 2739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2737,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2673,
                                  "src": "1036:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1045:2:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "1036:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2740,
                              "nodeType": "ExpressionStatement",
                              "src": "1036:11:13"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2711,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2673,
                            "src": "915:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "924:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "915:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2742,
                        "nodeType": "WhileStatement",
                        "src": "908:150:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2745,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2705,
                              "src": "1081:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1074:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2743,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1074:6:13",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1074:14:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2677,
                        "id": 2747,
                        "nodeType": "Return",
                        "src": "1067:21:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2671,
                    "nodeType": "StructuredDocumentation",
                    "src": "297:90:13",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 2749,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "401:8:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2673,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "418:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "410:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2672,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "410:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "409:15:13"
                  },
                  "returnParameters": {
                    "id": 2677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2676,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2749,
                        "src": "448:13:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2675,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "447:15:13"
                  },
                  "scope": 2887,
                  "src": "392:703:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2789,
                    "nodeType": "Block",
                    "src": "1274:255:13",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2757,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2752,
                            "src": "1288:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1297:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1288:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2763,
                        "nodeType": "IfStatement",
                        "src": "1284:54:13",
                        "trueBody": {
                          "id": 2762,
                          "nodeType": "Block",
                          "src": "1300:38:13",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30783030",
                                "id": 2760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1321:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                  "typeString": "literal_string \"0x00\""
                                },
                                "value": "0x00"
                              },
                              "functionReturnParameters": 2756,
                              "id": 2761,
                              "nodeType": "Return",
                              "src": "1314:13:13"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2765
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2765,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "1355:4:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2789,
                            "src": "1347:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2764,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1347:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2767,
                        "initialValue": {
                          "id": 2766,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2752,
                          "src": "1362:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1347:20:13"
                      },
                      {
                        "assignments": [
                          2769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2769,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1385:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2789,
                            "src": "1377:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2768,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1377:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2771,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1394:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1377:18:13"
                      },
                      {
                        "body": {
                          "id": 2782,
                          "nodeType": "Block",
                          "src": "1423:57:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1437:8:13",
                                "subExpression": {
                                  "id": 2775,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2769,
                                  "src": "1437:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2777,
                              "nodeType": "ExpressionStatement",
                              "src": "1437:8:13"
                            },
                            {
                              "expression": {
                                "id": 2780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2778,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2765,
                                  "src": "1459:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "38",
                                  "id": 2779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1468:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "1459:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2781,
                              "nodeType": "ExpressionStatement",
                              "src": "1459:10:13"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2772,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2765,
                            "src": "1412:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1420:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1412:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2783,
                        "nodeType": "WhileStatement",
                        "src": "1405:75:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2785,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2752,
                              "src": "1508:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2786,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2769,
                              "src": "1515:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2784,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2790,
                              2866,
                              2886
                            ],
                            "referencedDeclaration": 2866,
                            "src": "1496:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 2787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1496:26:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2756,
                        "id": 2788,
                        "nodeType": "Return",
                        "src": "1489:33:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2750,
                    "nodeType": "StructuredDocumentation",
                    "src": "1101:94:13",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 2790,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1209:11:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2752,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1229:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2790,
                        "src": "1221:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2751,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1221:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1220:15:13"
                  },
                  "returnParameters": {
                    "id": 2756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2755,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2790,
                        "src": "1259:13:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2754,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1258:15:13"
                  },
                  "scope": 2887,
                  "src": "1200:329:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2865,
                    "nodeType": "Block",
                    "src": "1742:351:13",
                    "statements": [
                      {
                        "assignments": [
                          2801
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2801,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "1765:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2865,
                            "src": "1752:19:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2800,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1752:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2810,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 2804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1784:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 2805,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2795,
                                  "src": "1788:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1784:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 2807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1797:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1784:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1774:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2802,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1778:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1774:25:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1752:47:13"
                      },
                      {
                        "expression": {
                          "id": 2815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2811,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2801,
                              "src": "1809:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2813,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 2812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1816:1:13",
                              "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:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 2814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1821:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "1809:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 2816,
                        "nodeType": "ExpressionStatement",
                        "src": "1809:15:13"
                      },
                      {
                        "expression": {
                          "id": 2821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2817,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2801,
                              "src": "1834:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2819,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 2818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1841:1:13",
                              "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:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 2820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1846:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "1834:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 2822,
                        "nodeType": "ExpressionStatement",
                        "src": "1834:15:13"
                      },
                      {
                        "body": {
                          "id": 2851,
                          "nodeType": "Block",
                          "src": "1904:87:13",
                          "statements": [
                            {
                              "expression": {
                                "id": 2845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2837,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2801,
                                    "src": "1918:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2839,
                                  "indexExpression": {
                                    "id": 2838,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2824,
                                    "src": "1925:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1918:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 2840,
                                    "name": "_HEX_SYMBOLS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2667,
                                    "src": "1930:12:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 2844,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2843,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2841,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2793,
                                      "src": "1943:5:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 2842,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1951:3:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "1943:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1930:25:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1918:37:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 2846,
                              "nodeType": "ExpressionStatement",
                              "src": "1918:37:13"
                            },
                            {
                              "expression": {
                                "id": 2849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2847,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2793,
                                  "src": "1969:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 2848,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1979:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "1969:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2850,
                              "nodeType": "ExpressionStatement",
                              "src": "1969:11:13"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2831,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2824,
                            "src": "1892:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 2832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1896:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1892:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2852,
                        "initializationExpression": {
                          "assignments": [
                            2824
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2824,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1872:1:13",
                              "nodeType": "VariableDeclaration",
                              "scope": 2852,
                              "src": "1864:9:13",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2823,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1864:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2830,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 2825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1876:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 2826,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "1880:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1876:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 2828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1889:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1876:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1864:26:13"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "1899:3:13",
                            "subExpression": {
                              "id": 2834,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2824,
                              "src": "1901:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2836,
                          "nodeType": "ExpressionStatement",
                          "src": "1899:3:13"
                        },
                        "nodeType": "ForStatement",
                        "src": "1859:132:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2854,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2793,
                                "src": "2008:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2017:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2008:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                              "id": 2857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2020:34:13",
                              "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": 2853,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2000:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2000:55:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2859,
                        "nodeType": "ExpressionStatement",
                        "src": "2000:55:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2862,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2801,
                              "src": "2079:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2072:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2860,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2072:6:13",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2072:14:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2799,
                        "id": 2864,
                        "nodeType": "Return",
                        "src": "2065:21:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2791,
                    "nodeType": "StructuredDocumentation",
                    "src": "1535:112:13",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 2866,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1661:11:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2793,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1681:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2866,
                        "src": "1673:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2792,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1673:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2795,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1696:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2866,
                        "src": "1688:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2794,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1688:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1672:31:13"
                  },
                  "returnParameters": {
                    "id": 2799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2798,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2866,
                        "src": "1727:13:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2797,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1726:15:13"
                  },
                  "scope": 2887,
                  "src": "1652:441:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2885,
                    "nodeType": "Block",
                    "src": "2318:76:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2879,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2869,
                                      "src": "2363:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2355:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 2877,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2355:7:13",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2880,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2355:13:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 2876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2347:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 2875,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2347:7:13",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2347:22:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2882,
                              "name": "_ADDRESS_LENGTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "2371:15:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 2874,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2790,
                              2866,
                              2886
                            ],
                            "referencedDeclaration": 2866,
                            "src": "2335:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2335:52:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2873,
                        "id": 2884,
                        "nodeType": "Return",
                        "src": "2328:59:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2867,
                    "nodeType": "StructuredDocumentation",
                    "src": "2099:141:13",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."
                  },
                  "id": 2886,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2254:11:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2869,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2274:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2886,
                        "src": "2266:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:14:13"
                  },
                  "returnParameters": {
                    "id": 2873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2872,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2886,
                        "src": "2303:13:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2871,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2303:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2302:15:13"
                  },
                  "scope": 2887,
                  "src": "2245:149:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2888,
              "src": "161:2235:13",
              "usedErrors": []
            }
          ],
          "src": "101:2296:13"
        },
        "id": 13
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
          "exportedSymbols": {
            "ECDSA": [
              3294
            ],
            "Strings": [
              2887
            ]
          },
          "id": 3295,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2889,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:14"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "../Strings.sol",
              "id": 2890,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3295,
              "sourceUnit": 2888,
              "src": "137:24:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2891,
                "nodeType": "StructuredDocumentation",
                "src": "163:205:14",
                "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": 3294,
              "linearizedBaseContracts": [
                3294
              ],
              "name": "ECDSA",
              "nameLocation": "377:5:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ECDSA.RecoverError",
                  "id": 2897,
                  "members": [
                    {
                      "id": 2892,
                      "name": "NoError",
                      "nameLocation": "417:7:14",
                      "nodeType": "EnumValue",
                      "src": "417:7:14"
                    },
                    {
                      "id": 2893,
                      "name": "InvalidSignature",
                      "nameLocation": "434:16:14",
                      "nodeType": "EnumValue",
                      "src": "434:16:14"
                    },
                    {
                      "id": 2894,
                      "name": "InvalidSignatureLength",
                      "nameLocation": "460:22:14",
                      "nodeType": "EnumValue",
                      "src": "460:22:14"
                    },
                    {
                      "id": 2895,
                      "name": "InvalidSignatureS",
                      "nameLocation": "492:17:14",
                      "nodeType": "EnumValue",
                      "src": "492:17:14"
                    },
                    {
                      "id": 2896,
                      "name": "InvalidSignatureV",
                      "nameLocation": "519:17:14",
                      "nodeType": "EnumValue",
                      "src": "519:17:14"
                    }
                  ],
                  "name": "RecoverError",
                  "nameLocation": "394:12:14",
                  "nodeType": "EnumDefinition",
                  "src": "389:153:14"
                },
                {
                  "body": {
                    "id": 2950,
                    "nodeType": "Block",
                    "src": "602:577:14",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_RecoverError_$2897",
                            "typeString": "enum ECDSA.RecoverError"
                          },
                          "id": 2906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2903,
                            "name": "error",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2900,
                            "src": "616:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 2904,
                              "name": "RecoverError",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2897,
                              "src": "625:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                "typeString": "type(enum ECDSA.RecoverError)"
                              }
                            },
                            "id": 2905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NoError",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2892,
                            "src": "625:20:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "src": "616:29:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "id": 2912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2909,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2900,
                              "src": "712:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 2910,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2897,
                                "src": "721:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 2911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "InvalidSignature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2893,
                              "src": "721:29:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "src": "712:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              "id": 2921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2918,
                                "name": "error",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2900,
                                "src": "821:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2897",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 2919,
                                  "name": "RecoverError",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2897,
                                  "src": "830:12:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                    "typeString": "type(enum ECDSA.RecoverError)"
                                  }
                                },
                                "id": 2920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "InvalidSignatureLength",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2894,
                                "src": "830:35:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2897",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "src": "821:44:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2897",
                                  "typeString": "enum ECDSA.RecoverError"
                                },
                                "id": 2930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2927,
                                  "name": "error",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2900,
                                  "src": "943:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2897",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2928,
                                    "name": "RecoverError",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2897,
                                    "src": "952:12:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                      "typeString": "type(enum ECDSA.RecoverError)"
                                    }
                                  },
                                  "id": 2929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "InvalidSignatureS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2895,
                                  "src": "952:30:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2897",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "src": "943:39:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2897",
                                    "typeString": "enum ECDSA.RecoverError"
                                  },
                                  "id": 2939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2936,
                                    "name": "error",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2900,
                                    "src": "1063:5:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2897",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 2937,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2897,
                                      "src": "1072:12:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 2938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2896,
                                    "src": "1072:30:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2897",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "src": "1063:39:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2945,
                                "nodeType": "IfStatement",
                                "src": "1059:114:14",
                                "trueBody": {
                                  "id": 2944,
                                  "nodeType": "Block",
                                  "src": "1104:69:14",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c7565",
                                            "id": 2941,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1125:36:14",
                                            "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": 2940,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "1118:6:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 2942,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1118:44:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2943,
                                      "nodeType": "ExpressionStatement",
                                      "src": "1118:44:14"
                                    }
                                  ]
                                }
                              },
                              "id": 2946,
                              "nodeType": "IfStatement",
                              "src": "939:234:14",
                              "trueBody": {
                                "id": 2935,
                                "nodeType": "Block",
                                "src": "984:69:14",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c7565",
                                          "id": 2932,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1005:36:14",
                                          "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": 2931,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "998:6:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 2933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "998:44:14",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2934,
                                    "nodeType": "ExpressionStatement",
                                    "src": "998:44:14"
                                  }
                                ]
                              }
                            },
                            "id": 2947,
                            "nodeType": "IfStatement",
                            "src": "817:356:14",
                            "trueBody": {
                              "id": 2926,
                              "nodeType": "Block",
                              "src": "867:66:14",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                        "id": 2923,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "888:33:14",
                                        "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": 2922,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -19,
                                        -19
                                      ],
                                      "referencedDeclaration": -19,
                                      "src": "881:6:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 2924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "881:41:14",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2925,
                                  "nodeType": "ExpressionStatement",
                                  "src": "881:41:14"
                                }
                              ]
                            }
                          },
                          "id": 2948,
                          "nodeType": "IfStatement",
                          "src": "708:465:14",
                          "trueBody": {
                            "id": 2917,
                            "nodeType": "Block",
                            "src": "752:59:14",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                      "id": 2914,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "773:26:14",
                                      "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": 2913,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "766:6:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "766:34:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2916,
                                "nodeType": "ExpressionStatement",
                                "src": "766:34:14"
                              }
                            ]
                          }
                        },
                        "id": 2949,
                        "nodeType": "IfStatement",
                        "src": "612:561:14",
                        "trueBody": {
                          "id": 2908,
                          "nodeType": "Block",
                          "src": "647:55:14",
                          "statements": [
                            {
                              "functionReturnParameters": 2902,
                              "id": 2907,
                              "nodeType": "Return",
                              "src": "661:7:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2951,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_throwError",
                  "nameLocation": "557:11:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2900,
                        "mutability": "mutable",
                        "name": "error",
                        "nameLocation": "582:5:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2951,
                        "src": "569:18:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2897",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 2899,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2898,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2897,
                            "src": "569:12:14"
                          },
                          "referencedDeclaration": 2897,
                          "src": "569:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2897",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "568:20:14"
                  },
                  "returnParameters": {
                    "id": 2902,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "602:0:14"
                  },
                  "scope": 3294,
                  "src": "548:631:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3015,
                    "nodeType": "Block",
                    "src": "2347:1269:14",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2964,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2956,
                              "src": "2554:9:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2554:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "3635",
                            "id": 2966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2574:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_65_by_1",
                              "typeString": "int_const 65"
                            },
                            "value": "65"
                          },
                          "src": "2554:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2986,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2956,
                                "src": "3083:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3083:16:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3634",
                              "id": 2988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3103:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "3083:22:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 3012,
                            "nodeType": "Block",
                            "src": "3529:81:14",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3006,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3559:1:14",
                                          "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": 3005,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3551:7:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3004,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3551:7:14",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3007,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3551:10:14",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 3008,
                                        "name": "RecoverError",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2897,
                                        "src": "3563:12:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                          "typeString": "type(enum ECDSA.RecoverError)"
                                        }
                                      },
                                      "id": 3009,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "InvalidSignatureLength",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2894,
                                      "src": "3563:35:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_RecoverError_$2897",
                                        "typeString": "enum ECDSA.RecoverError"
                                      }
                                    }
                                  ],
                                  "id": 3010,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3550:49:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                    "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 2963,
                                "id": 3011,
                                "nodeType": "Return",
                                "src": "3543:56:14"
                              }
                            ]
                          },
                          "id": 3013,
                          "nodeType": "IfStatement",
                          "src": "3079:531:14",
                          "trueBody": {
                            "id": 3003,
                            "nodeType": "Block",
                            "src": "3107:416:14",
                            "statements": [
                              {
                                "assignments": [
                                  2991
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2991,
                                    "mutability": "mutable",
                                    "name": "r",
                                    "nameLocation": "3129:1:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "3121:9:14",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 2990,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3121:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2992,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3121:9:14"
                              },
                              {
                                "assignments": [
                                  2994
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2994,
                                    "mutability": "mutable",
                                    "name": "vs",
                                    "nameLocation": "3152:2:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "3144:10:14",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 2993,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3144:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2995,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3144:10:14"
                              },
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "3355:114:14",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3373:32:14",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3388:9:14"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3399:4:14",
                                                "type": "",
                                                "value": "0x20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3384:3:14"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3384:20:14"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3378:5:14"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3378:27:14"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "3373:1:14"
                                        }
                                      ]
                                    },
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3422:33:14",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3438:9:14"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3449:4:14",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3434:3:14"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3434:20:14"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3428:5:14"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3428:27:14"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "vs",
                                          "nodeType": "YulIdentifier",
                                          "src": "3422:2:14"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "documentation": "@solidity memory-safe-assembly",
                                "evmVersion": "istanbul",
                                "externalReferences": [
                                  {
                                    "declaration": 2991,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3373:1:14",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2956,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3388:9:14",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2956,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3438:9:14",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2994,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3422:2:14",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 2996,
                                "nodeType": "InlineAssembly",
                                "src": "3346:123:14"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2998,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2954,
                                      "src": "3500:4:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 2999,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2991,
                                      "src": "3506:1:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 3000,
                                      "name": "vs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "3509:2:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 2997,
                                    "name": "tryRecover",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      3016,
                                      3090,
                                      3201
                                    ],
                                    "referencedDeclaration": 3090,
                                    "src": "3489:10:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                                      "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                                    }
                                  },
                                  "id": 3001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3489:23:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                    "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 2963,
                                "id": 3002,
                                "nodeType": "Return",
                                "src": "3482:30:14"
                              }
                            ]
                          }
                        },
                        "id": 3014,
                        "nodeType": "IfStatement",
                        "src": "2550:1060:14",
                        "trueBody": {
                          "id": 2985,
                          "nodeType": "Block",
                          "src": "2578:495:14",
                          "statements": [
                            {
                              "assignments": [
                                2969
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2969,
                                  "mutability": "mutable",
                                  "name": "r",
                                  "nameLocation": "2600:1:14",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2985,
                                  "src": "2592:9:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2968,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2592:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2970,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2592:9:14"
                            },
                            {
                              "assignments": [
                                2972
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2972,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "2623:1:14",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2985,
                                  "src": "2615:9:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2971,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2615:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2973,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2615:9:14"
                            },
                            {
                              "assignments": [
                                2975
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2975,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "2644:1:14",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2985,
                                  "src": "2638:7:14",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 2974,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2638:5:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2976,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2638:7:14"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "2846:171:14",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2864:32:14",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2879:9:14"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2890:4:14",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2875:3:14"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2875:20:14"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2869:5:14"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2869:27:14"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "2864:1:14"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2913:32:14",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2928:9:14"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2939:4:14",
                                              "type": "",
                                              "value": "0x40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2924:3:14"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2924:20:14"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2918:5:14"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2918:27:14"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "2913:1:14"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2962:41:14",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2972:1:14",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "signature",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2985:9:14"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2996:4:14",
                                                  "type": "",
                                                  "value": "0x60"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2981:3:14"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2981:20:14"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2975:5:14"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2975:27:14"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "byte",
                                        "nodeType": "YulIdentifier",
                                        "src": "2967:4:14"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2967:36:14"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "v",
                                        "nodeType": "YulIdentifier",
                                        "src": "2962:1:14"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "documentation": "@solidity memory-safe-assembly",
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 2969,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2864:1:14",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2972,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2913:1:14",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2956,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2879:9:14",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2956,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2928:9:14",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2956,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2985:9:14",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2975,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2962:1:14",
                                  "valueSize": 1
                                }
                              ],
                              "id": 2977,
                              "nodeType": "InlineAssembly",
                              "src": "2837:180:14"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2979,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2954,
                                    "src": "3048:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2980,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2975,
                                    "src": "3054:1:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 2981,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2969,
                                    "src": "3057:1:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2982,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2972,
                                    "src": "3060:1:14",
                                    "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": 2978,
                                  "name": "tryRecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    3016,
                                    3090,
                                    3201
                                  ],
                                  "referencedDeclaration": 3201,
                                  "src": "3037:10:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "id": 2983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3037:25:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 2963,
                              "id": 2984,
                              "nodeType": "Return",
                              "src": "3030:32:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2952,
                    "nodeType": "StructuredDocumentation",
                    "src": "1185:1053:14",
                    "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": 3016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "2252:10:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2954,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2271:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3016,
                        "src": "2263:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2953,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2956,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2290:9:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3016,
                        "src": "2277:22:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2955,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2277:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:38:14"
                  },
                  "returnParameters": {
                    "id": 2963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2959,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3016,
                        "src": "2324:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2324:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2962,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3016,
                        "src": "2333:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2897",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 2961,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2960,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2897,
                            "src": "2333:12:14"
                          },
                          "referencedDeclaration": 2897,
                          "src": "2333:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2897",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2323:23:14"
                  },
                  "scope": 3294,
                  "src": "2243:1373:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3042,
                    "nodeType": "Block",
                    "src": "4489:140:14",
                    "statements": [
                      {
                        "assignments": [
                          3027,
                          3030
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3027,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "4508:9:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3042,
                            "src": "4500:17:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3026,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4500:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3030,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "4532:5:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3042,
                            "src": "4519:18:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 3029,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 3028,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2897,
                                "src": "4519:12:14"
                              },
                              "referencedDeclaration": 2897,
                              "src": "4519:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3035,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3032,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3019,
                              "src": "4552:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3033,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3021,
                              "src": "4558:9:14",
                              "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": 3031,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3016,
                              3090,
                              3201
                            ],
                            "referencedDeclaration": 3016,
                            "src": "4541:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 3034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4541:27:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4499:69:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3037,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "4590:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 3036,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "4578:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2897_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 3038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4578:18:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3039,
                        "nodeType": "ExpressionStatement",
                        "src": "4578:18:14"
                      },
                      {
                        "expression": {
                          "id": 3040,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3027,
                          "src": "4613:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3025,
                        "id": 3041,
                        "nodeType": "Return",
                        "src": "4606:16:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3017,
                    "nodeType": "StructuredDocumentation",
                    "src": "3622:775:14",
                    "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": 3043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "4411:7:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3019,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4427:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3043,
                        "src": "4419:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3018,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4419:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3021,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4446:9:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3043,
                        "src": "4433:22:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3020,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4433:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4418:38:14"
                  },
                  "returnParameters": {
                    "id": 3025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3024,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3043,
                        "src": "4480:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4480:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4479:9:14"
                  },
                  "scope": 3294,
                  "src": "4402:227:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3089,
                    "nodeType": "Block",
                    "src": "5016:203:14",
                    "statements": [
                      {
                        "assignments": [
                          3059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3059,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "5034:1:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3089,
                            "src": "5026:9:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3058,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5026:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3066,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3060,
                            "name": "vs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3050,
                            "src": "5038:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                                "id": 3063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5051:66:14",
                                "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": 3062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5043:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3061,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "5043:7:14",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5043:75:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5038:80:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5026:92:14"
                      },
                      {
                        "assignments": [
                          3068
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3068,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "5134:1:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3089,
                            "src": "5128:7:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 3067,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5128:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3081,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 3073,
                                          "name": "vs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3050,
                                          "src": "5153:2:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 3072,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5145:7:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 3071,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5145:7:14",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3074,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5145:11:14",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">>",
                                    "rightExpression": {
                                      "hexValue": "323535",
                                      "id": 3075,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5160:3:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "255"
                                    },
                                    "src": "5145:18:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3077,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5144:20:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "3237",
                                "id": 3078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5167:2:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_27_by_1",
                                  "typeString": "int_const 27"
                                },
                                "value": "27"
                              },
                              "src": "5144:25:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5138:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 3069,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5138:5:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5138:32:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5128:42:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3083,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3046,
                              "src": "5198:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3084,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "5204:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 3085,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3048,
                              "src": "5207:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3086,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3059,
                              "src": "5210:1:14",
                              "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": 3082,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3016,
                              3090,
                              3201
                            ],
                            "referencedDeclaration": 3201,
                            "src": "5187:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5187:25:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 3057,
                        "id": 3088,
                        "nodeType": "Return",
                        "src": "5180:32:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3044,
                    "nodeType": "StructuredDocumentation",
                    "src": "4635:243:14",
                    "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": 3090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "4892:10:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3051,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3046,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4920:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3090,
                        "src": "4912:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3045,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4912:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3048,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4942:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3090,
                        "src": "4934:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3047,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4934:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3050,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "4961:2:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3090,
                        "src": "4953:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3049,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4953:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4902:67:14"
                  },
                  "returnParameters": {
                    "id": 3057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3053,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3090,
                        "src": "4993:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4993:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3056,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3090,
                        "src": "5002:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2897",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 3055,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3054,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2897,
                            "src": "5002:12:14"
                          },
                          "referencedDeclaration": 2897,
                          "src": "5002:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2897",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4992:23:14"
                  },
                  "scope": 3294,
                  "src": "4883:336:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3119,
                    "nodeType": "Block",
                    "src": "5500:136:14",
                    "statements": [
                      {
                        "assignments": [
                          3103,
                          3106
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3103,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "5519:9:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3119,
                            "src": "5511:17:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3102,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5511:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3106,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "5543:5:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3119,
                            "src": "5530:18:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 3105,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 3104,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2897,
                                "src": "5530:12:14"
                              },
                              "referencedDeclaration": 2897,
                              "src": "5530:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3112,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3108,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3093,
                              "src": "5563:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3109,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3095,
                              "src": "5569:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3110,
                              "name": "vs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3097,
                              "src": "5572:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3107,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3016,
                              3090,
                              3201
                            ],
                            "referencedDeclaration": 3090,
                            "src": "5552:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                              "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 3111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5552:23:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5510:65:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3114,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3106,
                              "src": "5597:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 3113,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "5585:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2897_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 3115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5585:18:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3116,
                        "nodeType": "ExpressionStatement",
                        "src": "5585:18:14"
                      },
                      {
                        "expression": {
                          "id": 3117,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3103,
                          "src": "5620:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3101,
                        "id": 3118,
                        "nodeType": "Return",
                        "src": "5613:16:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3091,
                    "nodeType": "StructuredDocumentation",
                    "src": "5225:154:14",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"
                  },
                  "id": 3120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "5393:7:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3093,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5418:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5410:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3092,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5410:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3095,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5440:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5432:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3094,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5432:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3097,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "5459:2:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5451:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3096,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5451:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5400:67:14"
                  },
                  "returnParameters": {
                    "id": 3101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3100,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5491:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3099,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5491:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5490:9:14"
                  },
                  "scope": 3294,
                  "src": "5384:252:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3200,
                    "nodeType": "Block",
                    "src": "5959:1454:14",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3139,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3129,
                                "src": "6855:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6847:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3137,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6847:7:14",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6847:10:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                            "id": 3141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6860:66:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                              "typeString": "int_const 5789...(69 digits omitted)...7168"
                            },
                            "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                          },
                          "src": "6847:79:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3152,
                        "nodeType": "IfStatement",
                        "src": "6843:161:14",
                        "trueBody": {
                          "id": 3151,
                          "nodeType": "Block",
                          "src": "6928:76:14",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6958:1:14",
                                        "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": 3144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6950:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3143,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6950:7:14",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6950:10:14",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 3147,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2897,
                                      "src": "6962:12:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 3148,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2895,
                                    "src": "6962:30:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2897",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 3149,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6949:44:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 3136,
                              "id": 3150,
                              "nodeType": "Return",
                              "src": "6942:51:14"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3153,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3125,
                              "src": "7017:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3237",
                              "id": 3154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7022:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_27_by_1",
                                "typeString": "int_const 27"
                              },
                              "value": "27"
                            },
                            "src": "7017:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3156,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3125,
                              "src": "7028:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3238",
                              "id": 3157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7033:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_28_by_1",
                                "typeString": "int_const 28"
                              },
                              "value": "28"
                            },
                            "src": "7028:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7017:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3169,
                        "nodeType": "IfStatement",
                        "src": "7013:100:14",
                        "trueBody": {
                          "id": 3168,
                          "nodeType": "Block",
                          "src": "7037:76:14",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3162,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7067:1:14",
                                        "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": 3161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7059:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3160,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7059:7:14",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3163,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7059:10:14",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 3164,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2897,
                                      "src": "7071:12:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 3165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2896,
                                    "src": "7071:30:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2897",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 3166,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7058:44:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 3136,
                              "id": 3167,
                              "nodeType": "Return",
                              "src": "7051:51:14"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3171
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3171,
                            "mutability": "mutable",
                            "name": "signer",
                            "nameLocation": "7215:6:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3200,
                            "src": "7207:14:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3170,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7207:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3178,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3173,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3123,
                              "src": "7234:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3174,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3125,
                              "src": "7240:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 3175,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3127,
                              "src": "7243:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3176,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3129,
                              "src": "7246:1:14",
                              "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": 3172,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "7224:9:14",
                            "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": 3177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7224:24:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7207:41:14"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3179,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3171,
                            "src": "7262:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 3182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7280:1:14",
                                "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": 3181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7272:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3180,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7272:7:14",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7272:10:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7262:20:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3194,
                        "nodeType": "IfStatement",
                        "src": "7258:101:14",
                        "trueBody": {
                          "id": 3193,
                          "nodeType": "Block",
                          "src": "7284:75:14",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3187,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7314:1:14",
                                        "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": 3186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7306:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3185,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7306:7:14",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7306:10:14",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 3189,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2897,
                                      "src": "7318:12:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 3190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2893,
                                    "src": "7318:29:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2897",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 3191,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7305:43:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 3136,
                              "id": 3192,
                              "nodeType": "Return",
                              "src": "7298:50:14"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 3195,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3171,
                              "src": "7377:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 3196,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2897,
                                "src": "7385:12:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$2897_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 3197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "NoError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2892,
                              "src": "7385:20:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "id": 3198,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7376:30:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 3136,
                        "id": 3199,
                        "nodeType": "Return",
                        "src": "7369:37:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3121,
                    "nodeType": "StructuredDocumentation",
                    "src": "5642:163:14",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"
                  },
                  "id": 3201,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "5819:10:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3123,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5847:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5839:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3122,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5839:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3125,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "5867:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5861:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3124,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3127,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5886:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5878:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3126,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5878:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3129,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "5905:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5897:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3128,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5897:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5829:83:14"
                  },
                  "returnParameters": {
                    "id": 3136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3132,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5936:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5936:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3135,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3201,
                        "src": "5945:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2897",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 3134,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3133,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2897,
                            "src": "5945:12:14"
                          },
                          "referencedDeclaration": 2897,
                          "src": "5945:12:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2897",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5935:23:14"
                  },
                  "scope": 3294,
                  "src": "5810:1603:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3233,
                    "nodeType": "Block",
                    "src": "7678:138:14",
                    "statements": [
                      {
                        "assignments": [
                          3216,
                          3219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3216,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "7697:9:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3233,
                            "src": "7689:17:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3215,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7689:7:14",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3219,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "7721:5:14",
                            "nodeType": "VariableDeclaration",
                            "scope": 3233,
                            "src": "7708:18:14",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2897",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 3218,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 3217,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2897,
                                "src": "7708:12:14"
                              },
                              "referencedDeclaration": 2897,
                              "src": "7708:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3226,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3221,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3204,
                              "src": "7741:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3222,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3206,
                              "src": "7747:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 3223,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3208,
                              "src": "7750:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3224,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3210,
                              "src": "7753:1:14",
                              "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": 3220,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3016,
                              3090,
                              3201
                            ],
                            "referencedDeclaration": 3201,
                            "src": "7730:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2897_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 3225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7730:25:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2897_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7688:67:14"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3228,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3219,
                              "src": "7777:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2897",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 3227,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "7765:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2897_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 3229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7765:18:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3230,
                        "nodeType": "ExpressionStatement",
                        "src": "7765:18:14"
                      },
                      {
                        "expression": {
                          "id": 3231,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3216,
                          "src": "7800:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3214,
                        "id": 3232,
                        "nodeType": "Return",
                        "src": "7793:16:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3202,
                    "nodeType": "StructuredDocumentation",
                    "src": "7419:122:14",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."
                  },
                  "id": 3234,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "7555:7:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3204,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "7580:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3234,
                        "src": "7572:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3203,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7572:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3206,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "7600:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3234,
                        "src": "7594:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3205,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7594:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3208,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "7619:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3234,
                        "src": "7611:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3207,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7611:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3210,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "7638:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3234,
                        "src": "7630:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3209,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7630:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7562:83:14"
                  },
                  "returnParameters": {
                    "id": 3214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3213,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3234,
                        "src": "7669:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7669:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7668:9:14"
                  },
                  "scope": 3294,
                  "src": "7546:270:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3250,
                    "nodeType": "Block",
                    "src": "8184:187:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                  "id": 3245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8322:34:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n32"
                                },
                                {
                                  "id": 3246,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3237,
                                  "src": "8358:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3243,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8305:3:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8305:16:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8305:58:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3242,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8295:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8295:69:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3241,
                        "id": 3249,
                        "nodeType": "Return",
                        "src": "8288:76:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3235,
                    "nodeType": "StructuredDocumentation",
                    "src": "7822:279:14",
                    "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": 3251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8115:22:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3237,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "8146:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3251,
                        "src": "8138:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3236,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8138:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8137:14:14"
                  },
                  "returnParameters": {
                    "id": 3241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3240,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3251,
                        "src": "8175:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3239,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8175:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8174:9:14"
                  },
                  "scope": 3294,
                  "src": "8106:265:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3272,
                    "nodeType": "Block",
                    "src": "8736:116:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a",
                                  "id": 3262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8780:32:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n"
                                },
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 3265,
                                        "name": "s",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3254,
                                        "src": "8831:1:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 3266,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "8831:8:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3263,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2887,
                                      "src": "8814:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$2887_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 3264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2749,
                                    "src": "8814:16:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 3267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8814:26:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 3268,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3254,
                                  "src": "8842:1:14",
                                  "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": 3260,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8763:3:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8763:16:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8763:81:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3259,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8753:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8753:92:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3258,
                        "id": 3271,
                        "nodeType": "Return",
                        "src": "8746:99:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3252,
                    "nodeType": "StructuredDocumentation",
                    "src": "8377:274:14",
                    "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": 3273,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8665:22:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3254,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "8701:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3273,
                        "src": "8688:14:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3253,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8688:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8687:16:14"
                  },
                  "returnParameters": {
                    "id": 3258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3257,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3273,
                        "src": "8727:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3256,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8727:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8726:9:14"
                  },
                  "scope": 3294,
                  "src": "8656:196:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3292,
                    "nodeType": "Block",
                    "src": "9293:92:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 3286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9337:10:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 3287,
                                  "name": "domainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3276,
                                  "src": "9349:15:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3288,
                                  "name": "structHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3278,
                                  "src": "9366:10:14",
                                  "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": 3284,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9320:3:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9320:16:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9320:57:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3283,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9310:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9310:68:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3282,
                        "id": 3291,
                        "nodeType": "Return",
                        "src": "9303:75:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3274,
                    "nodeType": "StructuredDocumentation",
                    "src": "8858:328:14",
                    "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": 3293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toTypedDataHash",
                  "nameLocation": "9200:15:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3276,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "9224:15:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3293,
                        "src": "9216:23:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3275,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9216:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3278,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "9249:10:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3293,
                        "src": "9241:18:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3277,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9215:45:14"
                  },
                  "returnParameters": {
                    "id": 3282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3281,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3293,
                        "src": "9284:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3280,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9284:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9283:9:14"
                  },
                  "scope": 3294,
                  "src": "9191:194:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3295,
              "src": "369:9018:14",
              "usedErrors": []
            }
          ],
          "src": "112:9276:14"
        },
        "id": 14
      },
      "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol",
          "exportedSymbols": {
            "ECDSA": [
              3294
            ],
            "EIP712": [
              3448
            ],
            "Strings": [
              2887
            ]
          },
          "id": 3449,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3296,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "104:23:15"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "./ECDSA.sol",
              "id": 3297,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3449,
              "sourceUnit": 3295,
              "src": "129:21:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3298,
                "nodeType": "StructuredDocumentation",
                "src": "152:1142:15",
                "text": " @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"
              },
              "fullyImplemented": true,
              "id": 3448,
              "linearizedBaseContracts": [
                3448
              ],
              "name": "EIP712",
              "nameLocation": "1313:6:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 3300,
                  "mutability": "immutable",
                  "name": "_CACHED_DOMAIN_SEPARATOR",
                  "nameLocation": "1589:24:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1563:50:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3299,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3302,
                  "mutability": "immutable",
                  "name": "_CACHED_CHAIN_ID",
                  "nameLocation": "1645:16:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1619:42:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3301,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1619:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3304,
                  "mutability": "immutable",
                  "name": "_CACHED_THIS",
                  "nameLocation": "1693:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1667:38:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3303,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3306,
                  "mutability": "immutable",
                  "name": "_HASHED_NAME",
                  "nameLocation": "1738:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1712:38:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3305,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1712:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3308,
                  "mutability": "immutable",
                  "name": "_HASHED_VERSION",
                  "nameLocation": "1782:15:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1756:41:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3307,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3310,
                  "mutability": "immutable",
                  "name": "_TYPE_HASH",
                  "nameLocation": "1829:10:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3448,
                  "src": "1803:36:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3309,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1803:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3374,
                    "nodeType": "Block",
                    "src": "2510:547:15",
                    "statements": [
                      {
                        "assignments": [
                          3319
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3319,
                            "mutability": "mutable",
                            "name": "hashedName",
                            "nameLocation": "2528:10:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3374,
                            "src": "2520:18:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3318,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2520:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3326,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3323,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3313,
                                  "src": "2557:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 3322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2551:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 3321,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2551:5:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2551:11:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3320,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2541:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2541:22:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2520:43:15"
                      },
                      {
                        "assignments": [
                          3328
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3328,
                            "mutability": "mutable",
                            "name": "hashedVersion",
                            "nameLocation": "2581:13:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3374,
                            "src": "2573:21:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3327,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2573:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3335,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3332,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3315,
                                  "src": "2613:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 3331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2607:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 3330,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2607:5:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2607:14:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3329,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2597:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2597:25:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2573:49:15"
                      },
                      {
                        "assignments": [
                          3337
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3337,
                            "mutability": "mutable",
                            "name": "typeHash",
                            "nameLocation": "2640:8:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 3374,
                            "src": "2632:16:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3336,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2632:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3341,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                              "id": 3339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2674:84:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                              },
                              "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                              }
                            ],
                            "id": 3338,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2651:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2651:117:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2632:136:15"
                      },
                      {
                        "expression": {
                          "id": 3344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3342,
                            "name": "_HASHED_NAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3306,
                            "src": "2778:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3343,
                            "name": "hashedName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3319,
                            "src": "2793:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2778:25:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3345,
                        "nodeType": "ExpressionStatement",
                        "src": "2778:25:15"
                      },
                      {
                        "expression": {
                          "id": 3348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3346,
                            "name": "_HASHED_VERSION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3308,
                            "src": "2813:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3347,
                            "name": "hashedVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3328,
                            "src": "2831:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2813:31:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3349,
                        "nodeType": "ExpressionStatement",
                        "src": "2813:31:15"
                      },
                      {
                        "expression": {
                          "id": 3353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3350,
                            "name": "_CACHED_CHAIN_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3302,
                            "src": "2854:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 3351,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2873:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 3352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "2873:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2854:32:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3354,
                        "nodeType": "ExpressionStatement",
                        "src": "2854:32:15"
                      },
                      {
                        "expression": {
                          "id": 3361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3355,
                            "name": "_CACHED_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3300,
                            "src": "2896:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3357,
                                "name": "typeHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3337,
                                "src": "2945:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3358,
                                "name": "hashedName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3319,
                                "src": "2955:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3359,
                                "name": "hashedVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3328,
                                "src": "2967:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3356,
                              "name": "_buildDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3431,
                              "src": "2923:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,bytes32,bytes32) view returns (bytes32)"
                              }
                            },
                            "id": 3360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2923:58:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2896:85:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3362,
                        "nodeType": "ExpressionStatement",
                        "src": "2896:85:15"
                      },
                      {
                        "expression": {
                          "id": 3368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3363,
                            "name": "_CACHED_THIS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3304,
                            "src": "2991:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3366,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "3014:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_EIP712_$3448",
                                  "typeString": "contract EIP712"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_EIP712_$3448",
                                  "typeString": "contract EIP712"
                                }
                              ],
                              "id": 3365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3006:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3364,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3006:7:15",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3006:13:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2991:28:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3369,
                        "nodeType": "ExpressionStatement",
                        "src": "2991:28:15"
                      },
                      {
                        "expression": {
                          "id": 3372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3370,
                            "name": "_TYPE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3029:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3371,
                            "name": "typeHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3337,
                            "src": "3042:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3029:21:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3373,
                        "nodeType": "ExpressionStatement",
                        "src": "3029:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3311,
                    "nodeType": "StructuredDocumentation",
                    "src": "1891:559:15",
                    "text": " @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."
                  },
                  "id": 3375,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3313,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2481:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3375,
                        "src": "2467:18:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3312,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2467:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3315,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "2501:7:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3375,
                        "src": "2487:21:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3314,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2487:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2466:43:15"
                  },
                  "returnParameters": {
                    "id": 3317,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2510:0:15"
                  },
                  "scope": 3448,
                  "src": "2455:602:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3403,
                    "nodeType": "Block",
                    "src": "3205:246:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 3383,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3227:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EIP712_$3448",
                                    "typeString": "contract EIP712"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EIP712_$3448",
                                    "typeString": "contract EIP712"
                                  }
                                ],
                                "id": 3382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3219:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3381,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3219:7:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3219:13:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 3385,
                              "name": "_CACHED_THIS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3304,
                              "src": "3236:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3219:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 3387,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3252:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "3252:13:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 3389,
                              "name": "_CACHED_CHAIN_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3302,
                              "src": "3269:16:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3252:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3219:66:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3401,
                          "nodeType": "Block",
                          "src": "3349:96:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3396,
                                    "name": "_TYPE_HASH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3310,
                                    "src": "3392:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3397,
                                    "name": "_HASHED_NAME",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3306,
                                    "src": "3404:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3398,
                                    "name": "_HASHED_VERSION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3308,
                                    "src": "3418:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 3395,
                                  "name": "_buildDomainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3431,
                                  "src": "3370:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,bytes32,bytes32) view returns (bytes32)"
                                  }
                                },
                                "id": 3399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3370:64:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 3380,
                              "id": 3400,
                              "nodeType": "Return",
                              "src": "3363:71:15"
                            }
                          ]
                        },
                        "id": 3402,
                        "nodeType": "IfStatement",
                        "src": "3215:230:15",
                        "trueBody": {
                          "id": 3394,
                          "nodeType": "Block",
                          "src": "3287:56:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 3392,
                                "name": "_CACHED_DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3300,
                                "src": "3308:24:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 3380,
                              "id": 3393,
                              "nodeType": "Return",
                              "src": "3301:31:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3376,
                    "nodeType": "StructuredDocumentation",
                    "src": "3063:75:15",
                    "text": " @dev Returns the domain separator for the current chain."
                  },
                  "id": 3404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_domainSeparatorV4",
                  "nameLocation": "3152:18:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3377,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3170:2:15"
                  },
                  "returnParameters": {
                    "id": 3380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3379,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3404,
                        "src": "3196:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3378,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3196:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3195:9:15"
                  },
                  "scope": 3448,
                  "src": "3143:308:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3430,
                    "nodeType": "Block",
                    "src": "3606:108:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3418,
                                  "name": "typeHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3406,
                                  "src": "3644:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3419,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3408,
                                  "src": "3654:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3420,
                                  "name": "versionHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3410,
                                  "src": "3664:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 3421,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "3677:5:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 3422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "chainid",
                                  "nodeType": "MemberAccess",
                                  "src": "3677:13:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3425,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "3700:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_EIP712_$3448",
                                        "typeString": "contract EIP712"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_EIP712_$3448",
                                        "typeString": "contract EIP712"
                                      }
                                    ],
                                    "id": 3424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3692:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3423,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3692:7:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3692:13:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3416,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3633:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "3633:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3633:73:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3415,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3623:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3623:84:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3414,
                        "id": 3429,
                        "nodeType": "Return",
                        "src": "3616:91:15"
                      }
                    ]
                  },
                  "id": 3431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_buildDomainSeparator",
                  "nameLocation": "3466:21:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3406,
                        "mutability": "mutable",
                        "name": "typeHash",
                        "nameLocation": "3505:8:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3431,
                        "src": "3497:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3405,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3497:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3408,
                        "mutability": "mutable",
                        "name": "nameHash",
                        "nameLocation": "3531:8:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3431,
                        "src": "3523:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3407,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3523:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3410,
                        "mutability": "mutable",
                        "name": "versionHash",
                        "nameLocation": "3557:11:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3431,
                        "src": "3549:19:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3409,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3549:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:87:15"
                  },
                  "returnParameters": {
                    "id": 3414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3413,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3431,
                        "src": "3597:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3412,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3597:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3596:9:15"
                  },
                  "scope": 3448,
                  "src": "3457:257:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3446,
                    "nodeType": "Block",
                    "src": "4425:79:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3441,
                                "name": "_domainSeparatorV4",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3404,
                                "src": "4464:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                  "typeString": "function () view returns (bytes32)"
                                }
                              },
                              "id": 3442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4464:20:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3443,
                              "name": "structHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3434,
                              "src": "4486:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 3439,
                              "name": "ECDSA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3294,
                              "src": "4442:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ECDSA_$3294_$",
                                "typeString": "type(library ECDSA)"
                              }
                            },
                            "id": 3440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toTypedDataHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3293,
                            "src": "4442:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 3444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4442:55:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3438,
                        "id": 3445,
                        "nodeType": "Return",
                        "src": "4435:62:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3432,
                    "nodeType": "StructuredDocumentation",
                    "src": "3720:614:15",
                    "text": " @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     keccak256(\"Mail(address to,string contents)\"),\n     mailTo,\n     keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"
                  },
                  "id": 3447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_hashTypedDataV4",
                  "nameLocation": "4348:16:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3434,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "4373:10:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3447,
                        "src": "4365:18:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3433,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4365:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4364:20:15"
                  },
                  "returnParameters": {
                    "id": 3438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3437,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3447,
                        "src": "4416:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3436,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4416:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4415:9:15"
                  },
                  "scope": 3448,
                  "src": "4339:165:15",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3449,
              "src": "1295:3211:15",
              "usedErrors": []
            }
          ],
          "src": "104:4403:15"
        },
        "id": 15
      },
      "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
          "exportedSymbols": {
            "ERC165": [
              3472
            ],
            "IERC165": [
              3484
            ]
          },
          "id": 3473,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3450,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:16"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
              "file": "./IERC165.sol",
              "id": 3451,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3473,
              "sourceUnit": 3485,
              "src": "124:23:16",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3453,
                    "name": "IERC165",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3484,
                    "src": "754:7:16"
                  },
                  "id": 3454,
                  "nodeType": "InheritanceSpecifier",
                  "src": "754:7:16"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3452,
                "nodeType": "StructuredDocumentation",
                "src": "149:576:16",
                "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": 3472,
              "linearizedBaseContracts": [
                3472,
                3484
              ],
              "name": "ERC165",
              "nameLocation": "744:6:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3483
                  ],
                  "body": {
                    "id": 3470,
                    "nodeType": "Block",
                    "src": "920:64:16",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 3468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3463,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3457,
                            "src": "937:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3465,
                                  "name": "IERC165",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3484,
                                  "src": "957:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3484_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165_$3484_$",
                                    "typeString": "type(contract IERC165)"
                                  }
                                ],
                                "id": 3464,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "952:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 3466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "952:13:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3484",
                                "typeString": "type(contract IERC165)"
                              }
                            },
                            "id": 3467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "952:25:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "937:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3462,
                        "id": 3469,
                        "nodeType": "Return",
                        "src": "930:47:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3455,
                    "nodeType": "StructuredDocumentation",
                    "src": "768:56:16",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3471,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "838:17:16",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3459,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "896:8:16"
                  },
                  "parameters": {
                    "id": 3458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3457,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "863:11:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3471,
                        "src": "856:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3456,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "855:20:16"
                  },
                  "returnParameters": {
                    "id": 3462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3461,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3471,
                        "src": "914:4:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3460,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "913:6:16"
                  },
                  "scope": 3472,
                  "src": "829:155:16",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 3473,
              "src": "726:260:16",
              "usedErrors": []
            }
          ],
          "src": "99:888:16"
        },
        "id": 16
      },
      "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              3484
            ]
          },
          "id": 3485,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3474,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3475,
                "nodeType": "StructuredDocumentation",
                "src": "125:279:17",
                "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": 3484,
              "linearizedBaseContracts": [
                3484
              ],
              "name": "IERC165",
              "nameLocation": "415:7:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3476,
                    "nodeType": "StructuredDocumentation",
                    "src": "429:340:17",
                    "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": 3483,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "783:17:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3478,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "808:11:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3483,
                        "src": "801:18:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3477,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "800:20:17"
                  },
                  "returnParameters": {
                    "id": 3482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3481,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3483,
                        "src": "844:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3480,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:6:17"
                  },
                  "scope": 3484,
                  "src": "774:76:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3485,
              "src": "405:447:17",
              "usedErrors": []
            }
          ],
          "src": "100:753:17"
        },
        "id": 17
      },
      "contracts/LiquiditeamNft.sol": {
        "ast": {
          "absolutePath": "contracts/LiquiditeamNft.sol",
          "exportedSymbols": {
            "AccessControl": [
              319
            ],
            "Address": [
              2639
            ],
            "Context": [
              2661
            ],
            "ECDSA": [
              3294
            ],
            "EIP712": [
              3448
            ],
            "ERC1155": [
              1742
            ],
            "ERC1155Burnable": [
              1974
            ],
            "ERC1155Supply": [
              2131
            ],
            "ERC165": [
              3472
            ],
            "IAccessControl": [
              392
            ],
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ],
            "LiquiditeamNft": [
              3883
            ],
            "Pausable": [
              519
            ],
            "Strings": [
              2887
            ]
          },
          "id": 3884,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3486,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:23:18"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "id": 3487,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 1743,
              "src": "64:59:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
              "file": "@openzeppelin/contracts/access/AccessControl.sol",
              "id": 3488,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 320,
              "src": "124:58:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
              "file": "@openzeppelin/contracts/security/Pausable.sol",
              "id": 3489,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 520,
              "src": "183:55:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol",
              "id": 3490,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 1975,
              "src": "239:78:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol",
              "id": 3491,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 2132,
              "src": "318:76:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol",
              "id": 3492,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 3449,
              "src": "395:69:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 3493,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3884,
              "sourceUnit": 3295,
              "src": "465:62:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3494,
                    "name": "ERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1742,
                    "src": "556:7:18"
                  },
                  "id": 3495,
                  "nodeType": "InheritanceSpecifier",
                  "src": "556:7:18"
                },
                {
                  "baseName": {
                    "id": 3496,
                    "name": "AccessControl",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 319,
                    "src": "565:13:18"
                  },
                  "id": 3497,
                  "nodeType": "InheritanceSpecifier",
                  "src": "565:13:18"
                },
                {
                  "baseName": {
                    "id": 3498,
                    "name": "Pausable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 519,
                    "src": "580:8:18"
                  },
                  "id": 3499,
                  "nodeType": "InheritanceSpecifier",
                  "src": "580:8:18"
                },
                {
                  "baseName": {
                    "id": 3500,
                    "name": "ERC1155Burnable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1974,
                    "src": "590:15:18"
                  },
                  "id": 3501,
                  "nodeType": "InheritanceSpecifier",
                  "src": "590:15:18"
                },
                {
                  "baseName": {
                    "id": 3502,
                    "name": "ERC1155Supply",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2131,
                    "src": "607:13:18"
                  },
                  "id": 3503,
                  "nodeType": "InheritanceSpecifier",
                  "src": "607:13:18"
                },
                {
                  "baseName": {
                    "id": 3504,
                    "name": "EIP712",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3448,
                    "src": "622:6:18"
                  },
                  "id": 3505,
                  "nodeType": "InheritanceSpecifier",
                  "src": "622:6:18"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 3883,
              "linearizedBaseContracts": [
                3883,
                3448,
                2131,
                1974,
                519,
                319,
                1742,
                2146,
                1864,
                3472,
                3484,
                392,
                2661
              ],
              "name": "LiquiditeamNft",
              "nameLocation": "538:14:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "7f345710",
                  "id": 3510,
                  "mutability": "constant",
                  "name": "URI_SETTER_ROLE",
                  "nameLocation": "657:15:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "633:70:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3506,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5552495f5345545445525f524f4c45",
                        "id": 3508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "685:17:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c",
                          "typeString": "literal_string \"URI_SETTER_ROLE\""
                        },
                        "value": "URI_SETTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c",
                          "typeString": "literal_string \"URI_SETTER_ROLE\""
                        }
                      ],
                      "id": 3507,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "675:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "675:28:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "121df247",
                  "id": 3515,
                  "mutability": "constant",
                  "name": "CONTRACT_URI_SETTER_ROLE",
                  "nameLocation": "731:24:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "707:88:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3511,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "707:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "434f4e54524143545f5552495f5345545445525f524f4c45",
                        "id": 3513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "768:26:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a",
                          "typeString": "literal_string \"CONTRACT_URI_SETTER_ROLE\""
                        },
                        "value": "CONTRACT_URI_SETTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a",
                          "typeString": "literal_string \"CONTRACT_URI_SETTER_ROLE\""
                        }
                      ],
                      "id": 3512,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "758:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "758:37:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e63ab1e9",
                  "id": 3520,
                  "mutability": "constant",
                  "name": "PAUSER_ROLE",
                  "nameLocation": "823:11:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "799:62:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3516,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "799:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5041555345525f524f4c45",
                        "id": 3518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "847:13:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                          "typeString": "literal_string \"PAUSER_ROLE\""
                        },
                        "value": "PAUSER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                          "typeString": "literal_string \"PAUSER_ROLE\""
                        }
                      ],
                      "id": 3517,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "837:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "837:24:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d5391393",
                  "id": 3525,
                  "mutability": "constant",
                  "name": "MINTER_ROLE",
                  "nameLocation": "889:11:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "865:62:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3521,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "865:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4d494e5445525f524f4c45",
                        "id": 3523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "913:13:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                          "typeString": "literal_string \"MINTER_ROLE\""
                        },
                        "value": "MINTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                          "typeString": "literal_string \"MINTER_ROLE\""
                        }
                      ],
                      "id": 3522,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "903:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "903:24:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "63ac5d97",
                  "id": 3530,
                  "mutability": "constant",
                  "name": "TRANSFERRER_ROLE",
                  "nameLocation": "955:16:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "931:72:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3526,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "931:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5452414e534645525245525f524f4c45",
                        "id": 3528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "984:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d7",
                          "typeString": "literal_string \"TRANSFERRER_ROLE\""
                        },
                        "value": "TRANSFERRER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d7",
                          "typeString": "literal_string \"TRANSFERRER_ROLE\""
                        }
                      ],
                      "id": 3527,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "974:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "974:29:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3532,
                  "mutability": "mutable",
                  "name": "_contractURI",
                  "nameLocation": "1023:12:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "1008:27:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3531,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1008:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3536,
                  "mutability": "mutable",
                  "name": "_uris",
                  "nameLocation": "1075:5:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "1040:40:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                    "typeString": "mapping(uint256 => string)"
                  },
                  "typeName": {
                    "id": 3535,
                    "keyType": {
                      "id": 3533,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1048:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1040:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                      "typeString": "mapping(uint256 => string)"
                    },
                    "valueType": {
                      "id": 3534,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1059:6:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3540,
                  "mutability": "mutable",
                  "name": "_usedPassIds",
                  "nameLocation": "1117:12:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 3883,
                  "src": "1084:45:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                    "typeString": "mapping(uint256 => bool)"
                  },
                  "typeName": {
                    "id": 3539,
                    "keyType": {
                      "id": 3537,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1092:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1084:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                      "typeString": "mapping(uint256 => bool)"
                    },
                    "valueType": {
                      "id": 3538,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1103:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "id": 3550,
                  "name": "TransferWithTransferPass",
                  "nameLocation": "1140:24:18",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3542,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "passId",
                        "nameLocation": "1173:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3550,
                        "src": "1165:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1165:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3544,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1189:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3550,
                        "src": "1181:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3546,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1206:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3550,
                        "src": "1198:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3545,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1198:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3548,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1218:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3550,
                        "src": "1210:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3547,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1210:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1164:61:18"
                  },
                  "src": "1134:92:18"
                },
                {
                  "body": {
                    "id": 3603,
                    "nodeType": "Block",
                    "src": "1347:318:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3565,
                              "name": "DEFAULT_ADMIN_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27,
                              "src": "1364:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3566,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1384:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1384:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3564,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1353:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1353:42:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3569,
                        "nodeType": "ExpressionStatement",
                        "src": "1353:42:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3571,
                              "name": "URI_SETTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3510,
                              "src": "1412:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3572,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1429:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1429:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3570,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1401:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:39:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3575,
                        "nodeType": "ExpressionStatement",
                        "src": "1401:39:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3577,
                              "name": "CONTRACT_URI_SETTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3515,
                              "src": "1457:24:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3578,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1483:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1483:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3576,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1446:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1446:48:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3581,
                        "nodeType": "ExpressionStatement",
                        "src": "1446:48:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3583,
                              "name": "PAUSER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3520,
                              "src": "1511:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3584,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1524:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1524:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3582,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1500:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1500:35:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3587,
                        "nodeType": "ExpressionStatement",
                        "src": "1500:35:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3589,
                              "name": "MINTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3525,
                              "src": "1552:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3590,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1565:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1565:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3588,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1541:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1541:35:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3593,
                        "nodeType": "ExpressionStatement",
                        "src": "1541:35:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3595,
                              "name": "TRANSFERRER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3530,
                              "src": "1593:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3596,
                              "name": "transferrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3552,
                              "src": "1611:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3594,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1582:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1582:41:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3598,
                        "nodeType": "ExpressionStatement",
                        "src": "1582:41:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3600,
                              "name": "newContractURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "1645:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3599,
                            "name": "setContractURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3651,
                            "src": "1630:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 3601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1630:30:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3602,
                        "nodeType": "ExpressionStatement",
                        "src": "1630:30:18"
                      }
                    ]
                  },
                  "id": 3604,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "",
                          "id": 3557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1301:2:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        }
                      ],
                      "id": 3558,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 3556,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "1293:7:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1293:11:18"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "4c6971756964697465616d4e66745472616e7366657250617373",
                          "id": 3560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1312:28:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5eaf798e10a98dc5dee6c492b00d8f4259050bd552fb806092bfa0ffa444ac0d",
                            "typeString": "literal_string \"LiquiditeamNftTransferPass\""
                          },
                          "value": "LiquiditeamNftTransferPass"
                        },
                        {
                          "hexValue": "31",
                          "id": 3561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1342:3:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                            "typeString": "literal_string \"1\""
                          },
                          "value": "1"
                        }
                      ],
                      "id": 3562,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 3559,
                        "name": "EIP712",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3448,
                        "src": "1305:6:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1305:41:18"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3552,
                        "mutability": "mutable",
                        "name": "transferrer",
                        "nameLocation": "1250:11:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3604,
                        "src": "1242:19:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1242:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3554,
                        "mutability": "mutable",
                        "name": "newContractURI",
                        "nameLocation": "1277:14:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3604,
                        "src": "1263:28:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3553,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1263:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1241:51:18"
                  },
                  "returnParameters": {
                    "id": 3563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1347:0:18"
                  },
                  "scope": 3883,
                  "src": "1230:435:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    607
                  ],
                  "body": {
                    "id": 3616,
                    "nodeType": "Block",
                    "src": "1747:27:18",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 3612,
                            "name": "_uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3536,
                            "src": "1760:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                              "typeString": "mapping(uint256 => string storage ref)"
                            }
                          },
                          "id": 3614,
                          "indexExpression": {
                            "id": 3613,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3606,
                            "src": "1766:2:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1760:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 3611,
                        "id": 3615,
                        "nodeType": "Return",
                        "src": "1753:16:18"
                      }
                    ]
                  },
                  "functionSelector": "0e89341c",
                  "id": 3617,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "1678:3:18",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3608,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1714:8:18"
                  },
                  "parameters": {
                    "id": 3607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3606,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1690:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3617,
                        "src": "1682:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1682:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1681:12:18"
                  },
                  "returnParameters": {
                    "id": 3611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3610,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3617,
                        "src": "1732:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3609,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1732:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1731:15:18"
                  },
                  "scope": 3883,
                  "src": "1669:105:18",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3629,
                    "nodeType": "Block",
                    "src": "1863:26:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3626,
                              "name": "newURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3619,
                              "src": "1877:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3625,
                            "name": "_setURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "1869:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 3627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1869:15:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3628,
                        "nodeType": "ExpressionStatement",
                        "src": "1869:15:18"
                      }
                    ]
                  },
                  "functionSelector": "02fe5305",
                  "id": 3630,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3622,
                          "name": "URI_SETTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3510,
                          "src": "1846:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3623,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3621,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "1837:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1837:25:18"
                    }
                  ],
                  "name": "setURI",
                  "nameLocation": "1801:6:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3619,
                        "mutability": "mutable",
                        "name": "newURI",
                        "nameLocation": "1822:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3630,
                        "src": "1808:20:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3618,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1808:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1807:22:18"
                  },
                  "returnParameters": {
                    "id": 3624,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1863:0:18"
                  },
                  "scope": 3883,
                  "src": "1792:97:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3637,
                    "nodeType": "Block",
                    "src": "1952:30:18",
                    "statements": [
                      {
                        "expression": {
                          "id": 3635,
                          "name": "_contractURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3532,
                          "src": "1965:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 3634,
                        "id": 3636,
                        "nodeType": "Return",
                        "src": "1958:19:18"
                      }
                    ]
                  },
                  "functionSelector": "e8a3d485",
                  "id": 3638,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "1902:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3631,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1913:2:18"
                  },
                  "returnParameters": {
                    "id": 3634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3633,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3638,
                        "src": "1937:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3632,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1937:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1936:15:18"
                  },
                  "scope": 3883,
                  "src": "1893:89:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3650,
                    "nodeType": "Block",
                    "src": "2074:32:18",
                    "statements": [
                      {
                        "expression": {
                          "id": 3648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3646,
                            "name": "_contractURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3532,
                            "src": "2080:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3647,
                            "name": "newURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3640,
                            "src": "2095:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2080:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3649,
                        "nodeType": "ExpressionStatement",
                        "src": "2080:21:18"
                      }
                    ]
                  },
                  "functionSelector": "938e3d7b",
                  "id": 3651,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3643,
                          "name": "CONTRACT_URI_SETTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3515,
                          "src": "2048:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3644,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3642,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2039:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2039:34:18"
                    }
                  ],
                  "name": "setContractURI",
                  "nameLocation": "1995:14:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3640,
                        "mutability": "mutable",
                        "name": "newURI",
                        "nameLocation": "2024:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3651,
                        "src": "2010:20:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3639,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2010:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2009:22:18"
                  },
                  "returnParameters": {
                    "id": 3645,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2074:0:18"
                  },
                  "scope": 3883,
                  "src": "1986:120:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3660,
                    "nodeType": "Block",
                    "src": "2156:19:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3657,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 502,
                            "src": "2162:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2162:8:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3659,
                        "nodeType": "ExpressionStatement",
                        "src": "2162:8:18"
                      }
                    ]
                  },
                  "functionSelector": "8456cb59",
                  "id": 3661,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3654,
                          "name": "PAUSER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3520,
                          "src": "2143:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3655,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3653,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2134:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2134:21:18"
                    }
                  ],
                  "name": "pause",
                  "nameLocation": "2119:5:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2124:2:18"
                  },
                  "returnParameters": {
                    "id": 3656,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2156:0:18"
                  },
                  "scope": 3883,
                  "src": "2110:65:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3670,
                    "nodeType": "Block",
                    "src": "2227:21:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3667,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 518,
                            "src": "2233:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2233:10:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3669,
                        "nodeType": "ExpressionStatement",
                        "src": "2233:10:18"
                      }
                    ]
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 3671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3664,
                          "name": "PAUSER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3520,
                          "src": "2214:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3665,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3663,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2205:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2205:21:18"
                    }
                  ],
                  "name": "unpause",
                  "nameLocation": "2188:7:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3662,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2195:2:18"
                  },
                  "returnParameters": {
                    "id": 3666,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2227:0:18"
                  },
                  "scope": 3883,
                  "src": "2179:69:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3692,
                    "nodeType": "Block",
                    "src": "2379:43:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3686,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3673,
                              "src": "2391:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3687,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3675,
                              "src": "2400:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3688,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3677,
                              "src": "2404:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3689,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3679,
                              "src": "2412:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3685,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1176,
                            "src": "2385:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 3690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2385:32:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3691,
                        "nodeType": "ExpressionStatement",
                        "src": "2385:32:18"
                      }
                    ]
                  },
                  "functionSelector": "731133e9",
                  "id": 3693,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3682,
                          "name": "MINTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3525,
                          "src": "2366:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3683,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3681,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2357:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2357:21:18"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "2261:4:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3673,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2279:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3693,
                        "src": "2271:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3672,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2271:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3675,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2300:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3693,
                        "src": "2292:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3674,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2292:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3677,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2316:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3693,
                        "src": "2308:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2308:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3679,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2341:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3693,
                        "src": "2328:17:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3678,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2328:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:84:18"
                  },
                  "returnParameters": {
                    "id": 3684,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2379:0:18"
                  },
                  "scope": 3883,
                  "src": "2252:170:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3716,
                    "nodeType": "Block",
                    "src": "2573:45:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3710,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3695,
                              "src": "2590:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3711,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3698,
                              "src": "2594:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3712,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3701,
                              "src": "2599:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3713,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3703,
                              "src": "2608:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3709,
                            "name": "_mintBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1287,
                            "src": "2579:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 3714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2579:34:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3715,
                        "nodeType": "ExpressionStatement",
                        "src": "2579:34:18"
                      }
                    ]
                  },
                  "functionSelector": "1f7fdffa",
                  "id": 3717,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 3706,
                          "name": "MINTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3525,
                          "src": "2560:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 3707,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3705,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2551:8:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2551:21:18"
                    }
                  ],
                  "name": "mintBatch",
                  "nameLocation": "2435:9:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3695,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2458:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3717,
                        "src": "2450:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2450:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3698,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2483:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3717,
                        "src": "2466:20:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3696,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2466:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3697,
                          "nodeType": "ArrayTypeName",
                          "src": "2466:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3701,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "2509:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3717,
                        "src": "2492:24:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3699,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2492:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3700,
                          "nodeType": "ArrayTypeName",
                          "src": "2492:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3703,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2535:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3717,
                        "src": "2522:17:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3702,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2522:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2444:99:18"
                  },
                  "returnParameters": {
                    "id": 3708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2573:0:18"
                  },
                  "scope": 3883,
                  "src": "2426:192:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3831,
                    "nodeType": "Block",
                    "src": "2822:1045:18",
                    "statements": [
                      {
                        "assignments": [
                          3735
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3735,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "2836:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3831,
                            "src": "2828:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3734,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2828:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3757,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "5472616e73666572506173732875696e74323536207061737349642c61646472657373206163636f756e742c75696e743235362069642c75696e7432353620616d6f756e742c75696e743235362076616c6964556e74696c2c737472696e67206e657755726929",
                                          "id": 3741,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2933:105:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c",
                                            "typeString": "literal_string \"TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)\""
                                          },
                                          "value": "TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c",
                                            "typeString": "literal_string \"TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)\""
                                          }
                                        ],
                                        "id": 3740,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "2910:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 3742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2910:140:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 3743,
                                      "name": "passId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3721,
                                      "src": "3062:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3744,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3723,
                                      "src": "3080:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3745,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3725,
                                      "src": "3099:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3746,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3727,
                                      "src": "3113:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3747,
                                      "name": "validUntil",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3729,
                                      "src": "3131:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 3751,
                                              "name": "newUri",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3731,
                                              "src": "3169:6:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 3750,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3163:5:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                              "typeString": "type(bytes storage pointer)"
                                            },
                                            "typeName": {
                                              "id": 3749,
                                              "name": "bytes",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3163:5:18",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 3752,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3163:13:18",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 3748,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "3153:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 3753,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3153:24:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3738,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2888:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3739,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "2888:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2888:299:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3737,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2869:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2869:326:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3736,
                            "name": "_hashTypedDataV4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "2845:16:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 3756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2845:356:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2828:373:18"
                      },
                      {
                        "assignments": [
                          3759
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3759,
                            "mutability": "mutable",
                            "name": "recoveredSigner",
                            "nameLocation": "3215:15:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3831,
                            "src": "3207:23:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3758,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3207:7:18",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3765,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3762,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3735,
                              "src": "3247:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3763,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3719,
                              "src": "3255:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3760,
                              "name": "ECDSA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3294,
                              "src": "3233:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ECDSA_$3294_$",
                                "typeString": "type(library ECDSA)"
                              }
                            },
                            "id": 3761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3043,
                            "src": "3233:13:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 3764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3233:32:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3207:58:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3768,
                                  "name": "TRANSFERRER_ROLE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3530,
                                  "src": "3287:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3769,
                                  "name": "recoveredSigner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3759,
                                  "src": "3305:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3767,
                                "name": "hasRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 79,
                                "src": "3279:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (bytes32,address) view returns (bool)"
                                }
                              },
                              "id": 3770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3279:42:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f6e6c7920746865207472616e73666572726572207369676e207472616e736665722070617373",
                              "id": 3771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3323:41:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458",
                                "typeString": "literal_string \"Only the transferrer sign transfer pass\""
                              },
                              "value": "Only the transferrer sign transfer pass"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458",
                                "typeString": "literal_string \"Only the transferrer sign transfer pass\""
                              }
                            ],
                            "id": 3766,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3271:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3271:94:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3773,
                        "nodeType": "ExpressionStatement",
                        "src": "3271:94:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3775,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3379:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 3776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "3379:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 3777,
                                "name": "validUntil",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3729,
                                "src": "3397:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3379:28:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5472616e7366657220706173732069732065787069726564",
                              "id": 3779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3409:26:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3",
                                "typeString": "literal_string \"Transfer pass is expired\""
                              },
                              "value": "Transfer pass is expired"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3",
                                "typeString": "literal_string \"Transfer pass is expired\""
                              }
                            ],
                            "id": 3774,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3371:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3371:65:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3781,
                        "nodeType": "ExpressionStatement",
                        "src": "3371:65:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "3450:21:18",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 3783,
                                  "name": "_usedPassIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3540,
                                  "src": "3451:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                                    "typeString": "mapping(uint256 => bool)"
                                  }
                                },
                                "id": 3785,
                                "indexExpression": {
                                  "id": 3784,
                                  "name": "passId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3721,
                                  "src": "3464:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3451:20:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5472616e7366657220706173732077617320616c72656164792075736564",
                              "id": 3787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3473:32:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b",
                                "typeString": "literal_string \"Transfer pass was already used\""
                              },
                              "value": "Transfer pass was already used"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b",
                                "typeString": "literal_string \"Transfer pass was already used\""
                              }
                            ],
                            "id": 3782,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3442:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3442:64:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3789,
                        "nodeType": "ExpressionStatement",
                        "src": "3442:64:18"
                      },
                      {
                        "assignments": [
                          3791
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3791,
                            "mutability": "mutable",
                            "name": "uriBytes",
                            "nameLocation": "3635:8:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 3831,
                            "src": "3622:21:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3790,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3622:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3798,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3794,
                                "name": "_uris",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3536,
                                "src": "3652:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                  "typeString": "mapping(uint256 => string storage ref)"
                                }
                              },
                              "id": 3796,
                              "indexExpression": {
                                "id": 3795,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3725,
                                "src": "3658:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3652:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "id": 3793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3646:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 3792,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3646:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3646:16:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3622:40:18"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 3799,
                              "name": "uriBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3791,
                              "src": "3672:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3672:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3691:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3672:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3810,
                        "nodeType": "IfStatement",
                        "src": "3668:59:18",
                        "trueBody": {
                          "id": 3809,
                          "nodeType": "Block",
                          "src": "3694:33:18",
                          "statements": [
                            {
                              "expression": {
                                "id": 3807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3803,
                                    "name": "_uris",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3536,
                                    "src": "3702:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 3805,
                                  "indexExpression": {
                                    "id": 3804,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3725,
                                    "src": "3708:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3702:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 3806,
                                  "name": "newUri",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3731,
                                  "src": "3714:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "3702:18:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 3808,
                              "nodeType": "ExpressionStatement",
                              "src": "3702:18:18"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3812,
                              "name": "passId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3721,
                              "src": "3763:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3813,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3723,
                              "src": "3771:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3814,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3725,
                              "src": "3780:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3815,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3727,
                              "src": "3784:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3811,
                            "name": "TransferWithTransferPass",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3550,
                            "src": "3738:24:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint256)"
                            }
                          },
                          "id": 3816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3738:53:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3817,
                        "nodeType": "EmitStatement",
                        "src": "3733:58:18"
                      },
                      {
                        "expression": {
                          "id": 3822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3818,
                              "name": "_usedPassIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3540,
                              "src": "3798:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                                "typeString": "mapping(uint256 => bool)"
                              }
                            },
                            "id": 3820,
                            "indexExpression": {
                              "id": 3819,
                              "name": "passId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3721,
                              "src": "3811:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3798:20:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 3821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3821:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3798:27:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3823,
                        "nodeType": "ExpressionStatement",
                        "src": "3798:27:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3825,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3723,
                              "src": "3838:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3826,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3725,
                              "src": "3847:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3827,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3727,
                              "src": "3851:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 3828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3859:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3824,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1176,
                            "src": "3832:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 3829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3832:30:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3830,
                        "nodeType": "ExpressionStatement",
                        "src": "3832:30:18"
                      }
                    ]
                  },
                  "functionSelector": "23a45c61",
                  "id": 3832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferWithTransferPass",
                  "nameLocation": "2631:24:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3719,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2674:9:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2661:22:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3718,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2661:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3721,
                        "mutability": "mutable",
                        "name": "passId",
                        "nameLocation": "2697:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2689:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2689:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3723,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2717:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2709:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3722,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2709:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3725,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2738:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2730:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2730:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3727,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2754:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2746:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2746:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3729,
                        "mutability": "mutable",
                        "name": "validUntil",
                        "nameLocation": "2774:10:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2766:18:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2766:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3731,
                        "mutability": "mutable",
                        "name": "newUri",
                        "nameLocation": "2804:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3832,
                        "src": "2790:20:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3730,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2790:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2655:159:18"
                  },
                  "returnParameters": {
                    "id": 3733,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2822:0:18"
                  },
                  "scope": 3883,
                  "src": "2622:1245:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1566,
                    2130
                  ],
                  "body": {
                    "id": 3865,
                    "nodeType": "Block",
                    "src": "4096:77:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3857,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3834,
                              "src": "4129:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3858,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3836,
                              "src": "4139:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3859,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3838,
                              "src": "4145:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3860,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3841,
                              "src": "4149:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3861,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3844,
                              "src": "4154:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3862,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3846,
                              "src": "4163:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3854,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4102:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_LiquiditeamNft_$3883_$",
                                "typeString": "type(contract super LiquiditeamNft)"
                              }
                            },
                            "id": 3856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_beforeTokenTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2130,
                            "src": "4102:26:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 3863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4102:66:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3864,
                        "nodeType": "ExpressionStatement",
                        "src": "4102:66:18"
                      }
                    ]
                  },
                  "id": 3866,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 3852,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3851,
                        "name": "whenNotPaused",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 446,
                        "src": "4082:13:18"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4082:13:18"
                    }
                  ],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "3880:20:18",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3850,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 3848,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "4058:7:18"
                      },
                      {
                        "id": 3849,
                        "name": "ERC1155Supply",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2131,
                        "src": "4067:13:18"
                      }
                    ],
                    "src": "4049:32:18"
                  },
                  "parameters": {
                    "id": 3847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3834,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3914:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "3906:16:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3906:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3836,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3936:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "3928:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3835,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3928:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3838,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3954:2:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "3946:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3946:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3841,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "3979:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "3962:20:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3839,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3962:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3840,
                          "nodeType": "ArrayTypeName",
                          "src": "3962:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3844,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "4005:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "3988:24:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3842,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3988:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3843,
                          "nodeType": "ArrayTypeName",
                          "src": "3988:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3846,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4031:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3866,
                        "src": "4018:17:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3845,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4018:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3900:139:18"
                  },
                  "returnParameters": {
                    "id": 3853,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4096:0:18"
                  },
                  "scope": 3883,
                  "src": "3871:302:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    60,
                    595
                  ],
                  "body": {
                    "id": 3881,
                    "nodeType": "Block",
                    "src": "4350:54:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3878,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3868,
                              "src": "4387:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 3876,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4363:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_LiquiditeamNft_$3883_$",
                                "typeString": "type(contract super LiquiditeamNft)"
                              }
                            },
                            "id": 3877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 60,
                            "src": "4363:23:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view returns (bool)"
                            }
                          },
                          "id": 3879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4363:36:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3875,
                        "id": 3880,
                        "nodeType": "Return",
                        "src": "4356:43:18"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3882,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "4252:17:18",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3872,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 3870,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "4311:7:18"
                      },
                      {
                        "id": 3871,
                        "name": "AccessControl",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 319,
                        "src": "4320:13:18"
                      }
                    ],
                    "src": "4302:32:18"
                  },
                  "parameters": {
                    "id": 3869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3868,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "4277:11:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 3882,
                        "src": "4270:18:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3867,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4270:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4269:20:18"
                  },
                  "returnParameters": {
                    "id": 3875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3874,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3882,
                        "src": "4344:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3873,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4344:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4343:6:18"
                  },
                  "scope": 3883,
                  "src": "4243:161:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 3884,
              "src": "529:3877:18",
              "usedErrors": []
            }
          ],
          "src": "39:4368:18"
        },
        "id": 18
      },
      "contracts/LiquiditeamNftV2.sol": {
        "ast": {
          "absolutePath": "contracts/LiquiditeamNftV2.sol",
          "exportedSymbols": {
            "AccessControl": [
              319
            ],
            "Address": [
              2639
            ],
            "Context": [
              2661
            ],
            "ECDSA": [
              3294
            ],
            "EIP712": [
              3448
            ],
            "ERC1155": [
              1742
            ],
            "ERC1155Burnable": [
              1974
            ],
            "ERC1155Supply": [
              2131
            ],
            "ERC165": [
              3472
            ],
            "ERC2981": [
              2344
            ],
            "IAccessControl": [
              392
            ],
            "IERC1155": [
              1864
            ],
            "IERC1155MetadataURI": [
              2146
            ],
            "IERC1155Receiver": [
              1905
            ],
            "IERC165": [
              3484
            ],
            "IERC2981": [
              411
            ],
            "LiquiditeamNftV2": [
              4381
            ],
            "Pausable": [
              519
            ],
            "Strings": [
              2887
            ]
          },
          "id": 4382,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3885,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:23:19"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
              "id": 3886,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 1743,
              "src": "64:59:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
              "file": "@openzeppelin/contracts/access/AccessControl.sol",
              "id": 3887,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 320,
              "src": "124:58:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
              "file": "@openzeppelin/contracts/security/Pausable.sol",
              "id": 3888,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 520,
              "src": "183:55:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/common/ERC2981.sol",
              "file": "@openzeppelin/contracts/token/common/ERC2981.sol",
              "id": 3889,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 2345,
              "src": "239:58:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol",
              "id": 3890,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 1975,
              "src": "298:78:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol",
              "file": "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol",
              "id": 3891,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 2132,
              "src": "377:76:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol",
              "id": 3892,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 3449,
              "src": "454:69:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 3893,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4382,
              "sourceUnit": 3295,
              "src": "524:62:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3894,
                    "name": "ERC1155",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1742,
                    "src": "617:7:19"
                  },
                  "id": 3895,
                  "nodeType": "InheritanceSpecifier",
                  "src": "617:7:19"
                },
                {
                  "baseName": {
                    "id": 3896,
                    "name": "ERC2981",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2344,
                    "src": "626:7:19"
                  },
                  "id": 3897,
                  "nodeType": "InheritanceSpecifier",
                  "src": "626:7:19"
                },
                {
                  "baseName": {
                    "id": 3898,
                    "name": "AccessControl",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 319,
                    "src": "635:13:19"
                  },
                  "id": 3899,
                  "nodeType": "InheritanceSpecifier",
                  "src": "635:13:19"
                },
                {
                  "baseName": {
                    "id": 3900,
                    "name": "Pausable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 519,
                    "src": "650:8:19"
                  },
                  "id": 3901,
                  "nodeType": "InheritanceSpecifier",
                  "src": "650:8:19"
                },
                {
                  "baseName": {
                    "id": 3902,
                    "name": "ERC1155Burnable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1974,
                    "src": "660:15:19"
                  },
                  "id": 3903,
                  "nodeType": "InheritanceSpecifier",
                  "src": "660:15:19"
                },
                {
                  "baseName": {
                    "id": 3904,
                    "name": "ERC1155Supply",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2131,
                    "src": "677:13:19"
                  },
                  "id": 3905,
                  "nodeType": "InheritanceSpecifier",
                  "src": "677:13:19"
                },
                {
                  "baseName": {
                    "id": 3906,
                    "name": "EIP712",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3448,
                    "src": "692:6:19"
                  },
                  "id": 3907,
                  "nodeType": "InheritanceSpecifier",
                  "src": "692:6:19"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 4381,
              "linearizedBaseContracts": [
                4381,
                3448,
                2131,
                1974,
                519,
                319,
                2344,
                1742,
                2146,
                1864,
                3472,
                411,
                3484,
                392,
                2661
              ],
              "name": "LiquiditeamNftV2",
              "nameLocation": "597:16:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "7f345710",
                  "id": 3912,
                  "mutability": "constant",
                  "name": "URI_SETTER_ROLE",
                  "nameLocation": "727:15:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "703:70:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "703:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5552495f5345545445525f524f4c45",
                        "id": 3910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "755:17:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c",
                          "typeString": "literal_string \"URI_SETTER_ROLE\""
                        },
                        "value": "URI_SETTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c",
                          "typeString": "literal_string \"URI_SETTER_ROLE\""
                        }
                      ],
                      "id": 3909,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "745:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "745:28:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "121df247",
                  "id": 3917,
                  "mutability": "constant",
                  "name": "CONTRACT_URI_SETTER_ROLE",
                  "nameLocation": "801:24:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "777:88:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3913,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "777:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "434f4e54524143545f5552495f5345545445525f524f4c45",
                        "id": 3915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "838:26:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a",
                          "typeString": "literal_string \"CONTRACT_URI_SETTER_ROLE\""
                        },
                        "value": "CONTRACT_URI_SETTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_17cdf715ecca7590eb5789987f00c7bcf0e7cb92c30a2788df2427a8f78f811a",
                          "typeString": "literal_string \"CONTRACT_URI_SETTER_ROLE\""
                        }
                      ],
                      "id": 3914,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "828:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "828:37:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e63ab1e9",
                  "id": 3922,
                  "mutability": "constant",
                  "name": "PAUSER_ROLE",
                  "nameLocation": "893:11:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "869:62:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3918,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "869:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5041555345525f524f4c45",
                        "id": 3920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "917:13:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                          "typeString": "literal_string \"PAUSER_ROLE\""
                        },
                        "value": "PAUSER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                          "typeString": "literal_string \"PAUSER_ROLE\""
                        }
                      ],
                      "id": 3919,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "907:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "907:24:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d5391393",
                  "id": 3927,
                  "mutability": "constant",
                  "name": "MINTER_ROLE",
                  "nameLocation": "959:11:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "935:62:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3923,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4d494e5445525f524f4c45",
                        "id": 3925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "983:13:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                          "typeString": "literal_string \"MINTER_ROLE\""
                        },
                        "value": "MINTER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                          "typeString": "literal_string \"MINTER_ROLE\""
                        }
                      ],
                      "id": 3924,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "973:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "973:24:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "cb9fcffb",
                  "id": 3932,
                  "mutability": "constant",
                  "name": "ROYALTY_ROLE",
                  "nameLocation": "1025:12:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "1001:64:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3928,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "524f59414c54595f524f4c45",
                        "id": 3930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1050:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e",
                          "typeString": "literal_string \"ROYALTY_ROLE\""
                        },
                        "value": "ROYALTY_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_eb54e1feee3ae17add098cbf58a47457bf5f7c3a89ceab263cbdb01b3da6d98e",
                          "typeString": "literal_string \"ROYALTY_ROLE\""
                        }
                      ],
                      "id": 3929,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1040:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1040:25:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "63ac5d97",
                  "id": 3937,
                  "mutability": "constant",
                  "name": "TRANSFERRER_ROLE",
                  "nameLocation": "1093:16:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "1069:72:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3933,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5452414e534645525245525f524f4c45",
                        "id": 3935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1122:18:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d7",
                          "typeString": "literal_string \"TRANSFERRER_ROLE\""
                        },
                        "value": "TRANSFERRER_ROLE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9c0b3a9882e11a6bfb8283b46d1e79513afb8024ee864cd3a5b3a9050c42a7d7",
                          "typeString": "literal_string \"TRANSFERRER_ROLE\""
                        }
                      ],
                      "id": 3934,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1112:9:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1112:29:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3939,
                  "mutability": "mutable",
                  "name": "_contractURI",
                  "nameLocation": "1161:12:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "1146:27:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3938,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1146:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3943,
                  "mutability": "mutable",
                  "name": "_uris",
                  "nameLocation": "1213:5:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "1178:40:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                    "typeString": "mapping(uint256 => string)"
                  },
                  "typeName": {
                    "id": 3942,
                    "keyType": {
                      "id": 3940,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1186:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1178:26:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                      "typeString": "mapping(uint256 => string)"
                    },
                    "valueType": {
                      "id": 3941,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:6:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3947,
                  "mutability": "mutable",
                  "name": "_usedPassIds",
                  "nameLocation": "1255:12:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "1222:45:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                    "typeString": "mapping(uint256 => bool)"
                  },
                  "typeName": {
                    "id": 3946,
                    "keyType": {
                      "id": 3944,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1230:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1222:24:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                      "typeString": "mapping(uint256 => bool)"
                    },
                    "valueType": {
                      "id": 3945,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1241:4:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "id": 3957,
                  "name": "TransferWithTransferPass",
                  "nameLocation": "1278:24:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3949,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "passId",
                        "nameLocation": "1311:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3957,
                        "src": "1303:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3951,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1327:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3957,
                        "src": "1319:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3950,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3953,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1344:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3957,
                        "src": "1336:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3955,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1356:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3957,
                        "src": "1348:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1348:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1302:61:19"
                  },
                  "src": "1272:92:19"
                },
                {
                  "body": {
                    "id": 4037,
                    "nodeType": "Block",
                    "src": "1558:499:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3976,
                              "name": "DEFAULT_ADMIN_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27,
                              "src": "1575:18:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3977,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1595:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1595:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3975,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1564:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1564:42:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3980,
                        "nodeType": "ExpressionStatement",
                        "src": "1564:42:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3982,
                              "name": "URI_SETTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3912,
                              "src": "1623:15:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3983,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1640:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1640:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3981,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1612:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1612:39:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3986,
                        "nodeType": "ExpressionStatement",
                        "src": "1612:39:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3988,
                              "name": "CONTRACT_URI_SETTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3917,
                              "src": "1668:24:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3989,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1694:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1694:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3987,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1657:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1657:48:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3992,
                        "nodeType": "ExpressionStatement",
                        "src": "1657:48:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3994,
                              "name": "PAUSER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3922,
                              "src": "1722:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 3995,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1735:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1735:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3993,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1711:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1711:35:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3998,
                        "nodeType": "ExpressionStatement",
                        "src": "1711:35:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4000,
                              "name": "MINTER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3927,
                              "src": "1763:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 4001,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1776:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1776:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3999,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1752:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 4003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1752:35:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4004,
                        "nodeType": "ExpressionStatement",
                        "src": "1752:35:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4006,
                              "name": "ROYALTY_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3932,
                              "src": "1804:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 4007,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1818:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1818:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4005,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1793:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 4009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1793:36:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4010,
                        "nodeType": "ExpressionStatement",
                        "src": "1793:36:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4012,
                              "name": "TRANSFERRER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3937,
                              "src": "1846:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4013,
                              "name": "transferrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3959,
                              "src": "1864:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4011,
                            "name": "_grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 287,
                            "src": "1835:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 4014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1835:41:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4015,
                        "nodeType": "ExpressionStatement",
                        "src": "1835:41:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4016,
                              "name": "royaltyReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3963,
                              "src": "1887:15:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1914: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": 4018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1906:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4017,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1906:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1906:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1887:29:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 4024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4022,
                              "name": "royaltyFeeNumerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3965,
                              "src": "1920:19:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 4023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1942:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1920:23:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1887:56:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4032,
                        "nodeType": "IfStatement",
                        "src": "1883:133:19",
                        "trueBody": {
                          "id": 4031,
                          "nodeType": "Block",
                          "src": "1945:71:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4027,
                                    "name": "royaltyReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3963,
                                    "src": "1972:15:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4028,
                                    "name": "royaltyFeeNumerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3965,
                                    "src": "1989:19:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 4026,
                                  "name": "_setDefaultRoyalty",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2285,
                                  "src": "1953:18:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                                    "typeString": "function (address,uint96)"
                                  }
                                },
                                "id": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1953:56:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4030,
                              "nodeType": "ExpressionStatement",
                              "src": "1953:56:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4034,
                              "name": "newContractURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3961,
                              "src": "2037:14:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4033,
                            "name": "setContractURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4085,
                            "src": "2022:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 4035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2022:30:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4036,
                        "nodeType": "ExpressionStatement",
                        "src": "2022:30:19"
                      }
                    ]
                  },
                  "id": 4038,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "",
                          "id": 3968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1512:2:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        }
                      ],
                      "id": 3969,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 3967,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "1504:7:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1504:11:19"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "4c6971756964697465616d4e66745472616e7366657250617373",
                          "id": 3971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1523:28:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5eaf798e10a98dc5dee6c492b00d8f4259050bd552fb806092bfa0ffa444ac0d",
                            "typeString": "literal_string \"LiquiditeamNftTransferPass\""
                          },
                          "value": "LiquiditeamNftTransferPass"
                        },
                        {
                          "hexValue": "31",
                          "id": 3972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1553:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                            "typeString": "literal_string \"1\""
                          },
                          "value": "1"
                        }
                      ],
                      "id": 3973,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 3970,
                        "name": "EIP712",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3448,
                        "src": "1516:6:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1516:41:19"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3959,
                        "mutability": "mutable",
                        "name": "transferrer",
                        "nameLocation": "1393:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4038,
                        "src": "1385:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1385:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3961,
                        "mutability": "mutable",
                        "name": "newContractURI",
                        "nameLocation": "1424:14:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4038,
                        "src": "1410:28:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3960,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1410:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3963,
                        "mutability": "mutable",
                        "name": "royaltyReceiver",
                        "nameLocation": "1452:15:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4038,
                        "src": "1444:23:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1444:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3965,
                        "mutability": "mutable",
                        "name": "royaltyFeeNumerator",
                        "nameLocation": "1480:19:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4038,
                        "src": "1473:26:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 3964,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1473:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1379:124:19"
                  },
                  "returnParameters": {
                    "id": 3974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1558:0:19"
                  },
                  "scope": 4381,
                  "src": "1368:689:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    607
                  ],
                  "body": {
                    "id": 4050,
                    "nodeType": "Block",
                    "src": "2139:27:19",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 4046,
                            "name": "_uris",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3943,
                            "src": "2152:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                              "typeString": "mapping(uint256 => string storage ref)"
                            }
                          },
                          "id": 4048,
                          "indexExpression": {
                            "id": 4047,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "2158:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2152:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4045,
                        "id": 4049,
                        "nodeType": "Return",
                        "src": "2145:16:19"
                      }
                    ]
                  },
                  "functionSelector": "0e89341c",
                  "id": 4051,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nameLocation": "2070:3:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4042,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2106:8:19"
                  },
                  "parameters": {
                    "id": 4041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4040,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2082:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4051,
                        "src": "2074:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2074:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2073:12:19"
                  },
                  "returnParameters": {
                    "id": 4045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4044,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4051,
                        "src": "2124:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4043,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2124:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2123:15:19"
                  },
                  "scope": 4381,
                  "src": "2061:105:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4063,
                    "nodeType": "Block",
                    "src": "2255:26:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4060,
                              "name": "newURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4053,
                              "src": "2269:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4059,
                            "name": "_setURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "2261:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 4061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2261:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4062,
                        "nodeType": "ExpressionStatement",
                        "src": "2261:15:19"
                      }
                    ]
                  },
                  "functionSelector": "02fe5305",
                  "id": 4064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4056,
                          "name": "URI_SETTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3912,
                          "src": "2238:15:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4057,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4055,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2229:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2229:25:19"
                    }
                  ],
                  "name": "setURI",
                  "nameLocation": "2193:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4054,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4053,
                        "mutability": "mutable",
                        "name": "newURI",
                        "nameLocation": "2214:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4064,
                        "src": "2200:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4052,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2200:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2199:22:19"
                  },
                  "returnParameters": {
                    "id": 4058,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2255:0:19"
                  },
                  "scope": 4381,
                  "src": "2184:97:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4071,
                    "nodeType": "Block",
                    "src": "2344:30:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 4069,
                          "name": "_contractURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3939,
                          "src": "2357:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 4068,
                        "id": 4070,
                        "nodeType": "Return",
                        "src": "2350:19:19"
                      }
                    ]
                  },
                  "functionSelector": "e8a3d485",
                  "id": 4072,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "2294:11:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2305:2:19"
                  },
                  "returnParameters": {
                    "id": 4068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4067,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4072,
                        "src": "2329:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4066,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2329:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2328:15:19"
                  },
                  "scope": 4381,
                  "src": "2285:89:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4084,
                    "nodeType": "Block",
                    "src": "2466:32:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 4082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4080,
                            "name": "_contractURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3939,
                            "src": "2472:12:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4081,
                            "name": "newURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4074,
                            "src": "2487:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2472:21:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4083,
                        "nodeType": "ExpressionStatement",
                        "src": "2472:21:19"
                      }
                    ]
                  },
                  "functionSelector": "938e3d7b",
                  "id": 4085,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4077,
                          "name": "CONTRACT_URI_SETTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3917,
                          "src": "2440:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4078,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4076,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2431:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2431:34:19"
                    }
                  ],
                  "name": "setContractURI",
                  "nameLocation": "2387:14:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4074,
                        "mutability": "mutable",
                        "name": "newURI",
                        "nameLocation": "2416:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4085,
                        "src": "2402:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4073,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2402:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2401:22:19"
                  },
                  "returnParameters": {
                    "id": 4079,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2466:0:19"
                  },
                  "scope": 4381,
                  "src": "2378:120:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4094,
                    "nodeType": "Block",
                    "src": "2548:19:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4091,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 502,
                            "src": "2554:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:8:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4093,
                        "nodeType": "ExpressionStatement",
                        "src": "2554:8:19"
                      }
                    ]
                  },
                  "functionSelector": "8456cb59",
                  "id": 4095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4088,
                          "name": "PAUSER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3922,
                          "src": "2535:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4089,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4087,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2526:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2526:21:19"
                    }
                  ],
                  "name": "pause",
                  "nameLocation": "2511:5:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4086,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2516:2:19"
                  },
                  "returnParameters": {
                    "id": 4090,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2548:0:19"
                  },
                  "scope": 4381,
                  "src": "2502:65:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4104,
                    "nodeType": "Block",
                    "src": "2619:21:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4101,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 518,
                            "src": "2625:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2625:10:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4103,
                        "nodeType": "ExpressionStatement",
                        "src": "2625:10:19"
                      }
                    ]
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 4105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4098,
                          "name": "PAUSER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3922,
                          "src": "2606:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4099,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4097,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2597:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2597:21:19"
                    }
                  ],
                  "name": "unpause",
                  "nameLocation": "2580:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2587:2:19"
                  },
                  "returnParameters": {
                    "id": 4100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2619:0:19"
                  },
                  "scope": 4381,
                  "src": "2571:69:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4126,
                    "nodeType": "Block",
                    "src": "2751:43:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4120,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4107,
                              "src": "2763:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4121,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4109,
                              "src": "2772:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4122,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4111,
                              "src": "2776:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4123,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4113,
                              "src": "2784:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4119,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1176,
                            "src": "2757:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2757:32:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4125,
                        "nodeType": "ExpressionStatement",
                        "src": "2757:32:19"
                      }
                    ]
                  },
                  "functionSelector": "731133e9",
                  "id": 4127,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4116,
                          "name": "MINTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3927,
                          "src": "2738:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4117,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4115,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2729:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2729:21:19"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "2653:4:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4107,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2666:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4127,
                        "src": "2658:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2658:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4109,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2683:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4127,
                        "src": "2675:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2675:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4111,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2695:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4127,
                        "src": "2687:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4113,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2716:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4127,
                        "src": "2703:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4112,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2703:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2657:64:19"
                  },
                  "returnParameters": {
                    "id": 4118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2751:0:19"
                  },
                  "scope": 4381,
                  "src": "2644:150:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4150,
                    "nodeType": "Block",
                    "src": "2945:45:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4144,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4129,
                              "src": "2962:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4145,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4132,
                              "src": "2966:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4146,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4135,
                              "src": "2971:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4147,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4137,
                              "src": "2980:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4143,
                            "name": "_mintBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1287,
                            "src": "2951:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2951:34:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4149,
                        "nodeType": "ExpressionStatement",
                        "src": "2951:34:19"
                      }
                    ]
                  },
                  "functionSelector": "1f7fdffa",
                  "id": 4151,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4140,
                          "name": "MINTER_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3927,
                          "src": "2932:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4141,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4139,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "2923:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2923:21:19"
                    }
                  ],
                  "name": "mintBatch",
                  "nameLocation": "2807:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4129,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2830:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4151,
                        "src": "2822:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2822:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4132,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "2855:3:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4151,
                        "src": "2838:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4130,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2838:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4131,
                          "nodeType": "ArrayTypeName",
                          "src": "2838:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4135,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "2881:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4151,
                        "src": "2864:24:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4133,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2864:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4134,
                          "nodeType": "ArrayTypeName",
                          "src": "2864:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4137,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2907:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4151,
                        "src": "2894:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4136,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2894:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2816:99:19"
                  },
                  "returnParameters": {
                    "id": 4142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2945:0:19"
                  },
                  "scope": 4381,
                  "src": "2798:192:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4166,
                    "nodeType": "Block",
                    "src": "3090:53:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4162,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4153,
                              "src": "3115:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4163,
                              "name": "feeNumerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4155,
                              "src": "3125:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 4161,
                            "name": "_setDefaultRoyalty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2285,
                            "src": "3096:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint96)"
                            }
                          },
                          "id": 4164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3096:42:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4165,
                        "nodeType": "ExpressionStatement",
                        "src": "3096:42:19"
                      }
                    ]
                  },
                  "functionSelector": "04634d8d",
                  "id": 4167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4158,
                          "name": "ROYALTY_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3932,
                          "src": "3076:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4159,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4157,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "3067:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3067:22:19"
                    }
                  ],
                  "name": "setDefaultRoyalty",
                  "nameLocation": "3003:17:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4153,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3029:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4167,
                        "src": "3021:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3021:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4155,
                        "mutability": "mutable",
                        "name": "feeNumerator",
                        "nameLocation": "3046:12:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4167,
                        "src": "3039:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 4154,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3039:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3020:39:19"
                  },
                  "returnParameters": {
                    "id": 4160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3090:0:19"
                  },
                  "scope": 4381,
                  "src": "2994:149:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4176,
                    "nodeType": "Block",
                    "src": "3209:34:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4173,
                            "name": "_deleteDefaultRoyalty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2293,
                            "src": "3215:21:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3215:23:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4175,
                        "nodeType": "ExpressionStatement",
                        "src": "3215:23:19"
                      }
                    ]
                  },
                  "functionSelector": "aa1b103f",
                  "id": 4177,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4170,
                          "name": "ROYALTY_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3932,
                          "src": "3195:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4171,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4169,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "3186:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3186:22:19"
                    }
                  ],
                  "name": "deleteDefaultRoyalty",
                  "nameLocation": "3156:20:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4168,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3176:2:19"
                  },
                  "returnParameters": {
                    "id": 4172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3209:0:19"
                  },
                  "scope": 4381,
                  "src": "3147:96:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4195,
                    "nodeType": "Block",
                    "src": "3358:60:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4190,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4179,
                              "src": "3381:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4191,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4181,
                              "src": "3390:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4192,
                              "name": "feeNumerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4183,
                              "src": "3400:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 4189,
                            "name": "_setTokenRoyalty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2331,
                            "src": "3364:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,address,uint96)"
                            }
                          },
                          "id": 4193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3364:49:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4194,
                        "nodeType": "ExpressionStatement",
                        "src": "3364:49:19"
                      }
                    ]
                  },
                  "functionSelector": "5944c753",
                  "id": 4196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4186,
                          "name": "ROYALTY_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3932,
                          "src": "3344:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4187,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4185,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "3335:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3335:22:19"
                    }
                  ],
                  "name": "setTokenRoyalty",
                  "nameLocation": "3256:15:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4184,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4179,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3280:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "3272:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3272:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4181,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3297:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "3289:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3289:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4183,
                        "mutability": "mutable",
                        "name": "feeNumerator",
                        "nameLocation": "3314:12:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "3307:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 4182,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3307:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3271:56:19"
                  },
                  "returnParameters": {
                    "id": 4188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3358:0:19"
                  },
                  "scope": 4381,
                  "src": "3247:171:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4208,
                    "nodeType": "Block",
                    "src": "3496:38:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4205,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4198,
                              "src": "3521:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4204,
                            "name": "_resetTokenRoyalty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2343,
                            "src": "3502:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3502:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4207,
                        "nodeType": "ExpressionStatement",
                        "src": "3502:27:19"
                      }
                    ]
                  },
                  "functionSelector": "8a616bc0",
                  "id": 4209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4201,
                          "name": "ROYALTY_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3932,
                          "src": "3482:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 4202,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4200,
                        "name": "onlyRole",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 38,
                        "src": "3473:8:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3473:22:19"
                    }
                  ],
                  "name": "resetTokenRoyalty",
                  "nameLocation": "3431:17:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4198,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3457:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4209,
                        "src": "3449:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3449:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3448:17:19"
                  },
                  "returnParameters": {
                    "id": 4203,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3496:0:19"
                  },
                  "scope": 4381,
                  "src": "3422:112:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4328,
                    "nodeType": "Block",
                    "src": "3738:1073:19",
                    "statements": [
                      {
                        "assignments": [
                          4227
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4227,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "3752:6:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 4328,
                            "src": "3744:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4226,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3744:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4249,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "5472616e73666572506173732875696e74323536207061737349642c61646472657373206163636f756e742c75696e743235362069642c75696e7432353620616d6f756e742c75696e743235362076616c6964556e74696c2c737472696e67206e657755726929",
                                          "id": 4233,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3849:105:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c",
                                            "typeString": "literal_string \"TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)\""
                                          },
                                          "value": "TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_8a73f441ccfc90803a814e1b8136a6b47f18aec294550d26966593ee7ef0e03c",
                                            "typeString": "literal_string \"TransferPass(uint256 passId,address account,uint256 id,uint256 amount,uint256 validUntil,string newUri)\""
                                          }
                                        ],
                                        "id": 4232,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "3826:9:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 4234,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3826:140:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 4235,
                                      "name": "passId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4213,
                                      "src": "3978:6:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4236,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4215,
                                      "src": "3996:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 4237,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4217,
                                      "src": "4015:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4238,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4219,
                                      "src": "4029:6:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4239,
                                      "name": "validUntil",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4221,
                                      "src": "4047:10:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 4243,
                                              "name": "newUri",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4223,
                                              "src": "4085:6:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 4242,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "4079:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                              "typeString": "type(bytes storage pointer)"
                                            },
                                            "typeName": {
                                              "id": 4241,
                                              "name": "bytes",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4079:5:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4244,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4079:13:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 4240,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "4069:9:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 4245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4069:24:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4230,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "3804:3:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 4231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "3804:10:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 4246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3804:299:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 4229,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "3785:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 4247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3785:326:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4228,
                            "name": "_hashTypedDataV4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "3761:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 4248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3761:356:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3744:373:19"
                      },
                      {
                        "assignments": [
                          4251
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4251,
                            "mutability": "mutable",
                            "name": "recoveredSigner",
                            "nameLocation": "4131:15:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 4328,
                            "src": "4123:23:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4250,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4123:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4257,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4254,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4227,
                              "src": "4163:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4255,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "4171:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4252,
                              "name": "ECDSA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3294,
                              "src": "4149:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ECDSA_$3294_$",
                                "typeString": "type(library ECDSA)"
                              }
                            },
                            "id": 4253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3043,
                            "src": "4149:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 4256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4149:32:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4123:58:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 4260,
                                  "name": "TRANSFERRER_ROLE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3937,
                                  "src": "4203:16:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 4261,
                                  "name": "recoveredSigner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4251,
                                  "src": "4221:15:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4259,
                                "name": "hasRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 79,
                                "src": "4195:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (bytes32,address) view returns (bool)"
                                }
                              },
                              "id": 4262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4195:42:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f6e6c7920746865207472616e73666572726572207369676e207472616e736665722070617373",
                              "id": 4263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4239:41:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458",
                                "typeString": "literal_string \"Only the transferrer sign transfer pass\""
                              },
                              "value": "Only the transferrer sign transfer pass"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fef6b81837d5c492f1bf1ba262058a2f30b60b87847d59bda6b999f7ca0b1458",
                                "typeString": "literal_string \"Only the transferrer sign transfer pass\""
                              }
                            ],
                            "id": 4258,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4187:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4187:94:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4265,
                        "nodeType": "ExpressionStatement",
                        "src": "4187:94:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4267,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "4295:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "4295:15:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 4269,
                                "name": "validUntil",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4221,
                                "src": "4313:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4295:28:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5472616e7366657220706173732069732065787069726564",
                              "id": 4271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4325:26:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3",
                                "typeString": "literal_string \"Transfer pass is expired\""
                              },
                              "value": "Transfer pass is expired"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6503f68348c98e2e5cc55e32ac87eeb758e390b0ce469af6657854d021b470f3",
                                "typeString": "literal_string \"Transfer pass is expired\""
                              }
                            ],
                            "id": 4266,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4287:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4287:65:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4273,
                        "nodeType": "ExpressionStatement",
                        "src": "4287:65:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "4366:21:19",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 4275,
                                  "name": "_usedPassIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3947,
                                  "src": "4367:12:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                                    "typeString": "mapping(uint256 => bool)"
                                  }
                                },
                                "id": 4277,
                                "indexExpression": {
                                  "id": 4276,
                                  "name": "passId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4213,
                                  "src": "4380:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4367:20:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5472616e7366657220706173732077617320616c72656164792075736564",
                              "id": 4279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4389:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b",
                                "typeString": "literal_string \"Transfer pass was already used\""
                              },
                              "value": "Transfer pass was already used"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b58c89769c97d6bc6d406ba8ca6a6ae90c9fd2d3ae55399e40b846b2be664c7b",
                                "typeString": "literal_string \"Transfer pass was already used\""
                              }
                            ],
                            "id": 4274,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4358:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4358:64:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4281,
                        "nodeType": "ExpressionStatement",
                        "src": "4358:64:19"
                      },
                      {
                        "assignments": [
                          4283
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4283,
                            "mutability": "mutable",
                            "name": "uriBytes",
                            "nameLocation": "4551:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 4328,
                            "src": "4538:21:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4282,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4538:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4290,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4286,
                                "name": "_uris",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3943,
                                "src": "4568:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                  "typeString": "mapping(uint256 => string storage ref)"
                                }
                              },
                              "id": 4288,
                              "indexExpression": {
                                "id": 4287,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "4574:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4568:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "id": 4285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4562:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4284,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4562:5:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4562:16:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4538:40:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4291,
                              "name": "uriBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4283,
                              "src": "4588:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4588:15:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4607:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4588:20:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4307,
                        "nodeType": "IfStatement",
                        "src": "4584:87:19",
                        "trueBody": {
                          "id": 4306,
                          "nodeType": "Block",
                          "src": "4610:61:19",
                          "statements": [
                            {
                              "expression": {
                                "id": 4299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4295,
                                    "name": "_uris",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3943,
                                    "src": "4618:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 4297,
                                  "indexExpression": {
                                    "id": 4296,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4217,
                                    "src": "4624:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4618:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4298,
                                  "name": "newUri",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4223,
                                  "src": "4630:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "4618:18:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 4300,
                              "nodeType": "ExpressionStatement",
                              "src": "4618:18:19"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 4302,
                                    "name": "newUri",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4223,
                                    "src": "4653:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "id": 4303,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4217,
                                    "src": "4661:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4301,
                                  "name": "URI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1792,
                                  "src": "4649:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (string memory,uint256)"
                                  }
                                },
                                "id": 4304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4649:15:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4305,
                              "nodeType": "EmitStatement",
                              "src": "4644:20:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4309,
                              "name": "passId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4213,
                              "src": "4707:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4310,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4215,
                              "src": "4715:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4311,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "4724:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4312,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4219,
                              "src": "4728:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4308,
                            "name": "TransferWithTransferPass",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3957,
                            "src": "4682:24:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint256)"
                            }
                          },
                          "id": 4313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4682:53:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4314,
                        "nodeType": "EmitStatement",
                        "src": "4677:58:19"
                      },
                      {
                        "expression": {
                          "id": 4319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4315,
                              "name": "_usedPassIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3947,
                              "src": "4742:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                                "typeString": "mapping(uint256 => bool)"
                              }
                            },
                            "id": 4317,
                            "indexExpression": {
                              "id": 4316,
                              "name": "passId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4213,
                              "src": "4755:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4742:20:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4765:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4742:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4320,
                        "nodeType": "ExpressionStatement",
                        "src": "4742:27:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4322,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4215,
                              "src": "4782:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4323,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "4791:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4324,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4219,
                              "src": "4795:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 4325,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4803:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 4321,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1176,
                            "src": "4776:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4776:30:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4327,
                        "nodeType": "ExpressionStatement",
                        "src": "4776:30:19"
                      }
                    ]
                  },
                  "functionSelector": "23a45c61",
                  "id": 4329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferWithTransferPass",
                  "nameLocation": "3547:24:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4211,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3590:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3577:22:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4210,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3577:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4213,
                        "mutability": "mutable",
                        "name": "passId",
                        "nameLocation": "3613:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3605:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3605:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4215,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3633:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3625:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3625:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4217,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3654:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3646:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4216,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3646:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4219,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3670:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3662:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3662:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4221,
                        "mutability": "mutable",
                        "name": "validUntil",
                        "nameLocation": "3690:10:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3682:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3682:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4223,
                        "mutability": "mutable",
                        "name": "newUri",
                        "nameLocation": "3720:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4329,
                        "src": "3706:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4222,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3706:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3571:159:19"
                  },
                  "returnParameters": {
                    "id": 4225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3738:0:19"
                  },
                  "scope": 4381,
                  "src": "3538:1273:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1566,
                    2130
                  ],
                  "body": {
                    "id": 4362,
                    "nodeType": "Block",
                    "src": "5040:77:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4354,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4331,
                              "src": "5073:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4355,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4333,
                              "src": "5083:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4356,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4335,
                              "src": "5089:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4357,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4338,
                              "src": "5093:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4358,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4341,
                              "src": "5098:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4359,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4343,
                              "src": "5107:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4351,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "5046:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_LiquiditeamNftV2_$4381_$",
                                "typeString": "type(contract super LiquiditeamNftV2)"
                              }
                            },
                            "id": 4353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_beforeTokenTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2130,
                            "src": "5046:26:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5046:66:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4361,
                        "nodeType": "ExpressionStatement",
                        "src": "5046:66:19"
                      }
                    ]
                  },
                  "id": 4363,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 4349,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4348,
                        "name": "whenNotPaused",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 446,
                        "src": "5026:13:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5026:13:19"
                    }
                  ],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "4824:20:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4347,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4345,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "5002:7:19"
                      },
                      {
                        "id": 4346,
                        "name": "ERC1155Supply",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2131,
                        "src": "5011:13:19"
                      }
                    ],
                    "src": "4993:32:19"
                  },
                  "parameters": {
                    "id": 4344,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4331,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4858:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4850:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4850:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4333,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4880:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4872:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4332,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4872:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4335,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4898:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4890:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4890:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4338,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "4923:3:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4906:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4336,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4906:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4337,
                          "nodeType": "ArrayTypeName",
                          "src": "4906:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4341,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "4949:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4932:24:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4339,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4932:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4340,
                          "nodeType": "ArrayTypeName",
                          "src": "4932:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4343,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4975:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "4962:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4342,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4962:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4844:139:19"
                  },
                  "returnParameters": {
                    "id": 4350,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5040:0:19"
                  },
                  "scope": 4381,
                  "src": "4815:302:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    60,
                    595,
                    2192
                  ],
                  "body": {
                    "id": 4379,
                    "nodeType": "Block",
                    "src": "5303:54:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4376,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4365,
                              "src": "5340:11:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 4374,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "5316:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_LiquiditeamNftV2_$4381_$",
                                "typeString": "type(contract super LiquiditeamNftV2)"
                              }
                            },
                            "id": 4375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 60,
                            "src": "5316:23:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) view returns (bool)"
                            }
                          },
                          "id": 4377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5316:36:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4373,
                        "id": 4378,
                        "nodeType": "Return",
                        "src": "5309:43:19"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "5196:17:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4370,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4367,
                        "name": "ERC1155",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1742,
                        "src": "5255:7:19"
                      },
                      {
                        "id": 4368,
                        "name": "ERC2981",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2344,
                        "src": "5264:7:19"
                      },
                      {
                        "id": 4369,
                        "name": "AccessControl",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 319,
                        "src": "5273:13:19"
                      }
                    ],
                    "src": "5246:41:19"
                  },
                  "parameters": {
                    "id": 4366,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4365,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "5221:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 4380,
                        "src": "5214:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4364,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "5214:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5213:20:19"
                  },
                  "returnParameters": {
                    "id": 4373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4372,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4380,
                        "src": "5297:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4371,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5297:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5296:6:19"
                  },
                  "scope": 4381,
                  "src": "5187:170:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4382,
              "src": "588:4771:19",
              "usedErrors": []
            }
          ],
          "src": "39:5321:19"
        },
        "id": 19
      }
    }
  }
}
