{
    "contractName": "AliceERC721",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "approved",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "ApprovalForAll",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getApproved",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "isApprovedForAll",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "ownerOf",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "setApprovalForAll",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "tokenURI",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "mint",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/AliceERC721.sol\":\"AliceERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/AliceERC721.sol\":{\"keccak256\":\"0xd92eaae8ce2c88a33bea588993c263b248ada8e9392d7723afa6aea6f20542a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a79698ac27cf76cd2b5bd67ddcfdb2e8ccfb4c62cf1b1c3be4b5042d4f20a81\",\"dweb:/ipfs/QmdiksRDSxa23fAYC7yNjJght3RpsNoUbpxc7zgjacsCW6\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"project:/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"project:/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}",
    "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280601281526020017f416c6963652045524337323120546f6b656e00000000000000000000000000008152506040518060400160405280600b81526020017f416c69636545524337323100000000000000000000000000000000000000000081525081600090816200008f919062000324565b508060019081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612792806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb46514610282578063b88d4fde1461029e578063c87b56dd146102ba578063e985e9c5146102ea576100f5565b806342966c68146101e85780636352211e1461020457806370a082311461023457806395d89b4114610264576100f5565b8063095ea7b3116100d3578063095ea7b31461017857806323b872dd1461019457806340c10f19146101b057806342842e0e146101cc576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f91906119f7565b61031a565b6040516101219190611a3f565b60405180910390f35b6101326103fc565b60405161013f9190611aea565b60405180910390f35b610162600480360381019061015d9190611b42565b61048e565b60405161016f9190611bb0565b60405180910390f35b610192600480360381019061018d9190611bf7565b6104d4565b005b6101ae60048036038101906101a99190611c37565b6105eb565b005b6101ca60048036038101906101c59190611bf7565b61064b565b005b6101e660048036038101906101e19190611c37565b610659565b005b61020260048036038101906101fd9190611b42565b610679565b005b61021e60048036038101906102199190611b42565b610685565b60405161022b9190611bb0565b60405180910390f35b61024e60048036038101906102499190611c8a565b61070b565b60405161025b9190611cc6565b60405180910390f35b61026c6107c2565b6040516102799190611aea565b60405180910390f35b61029c60048036038101906102979190611d0d565b610854565b005b6102b860048036038101906102b39190611e82565b61086a565b005b6102d460048036038101906102cf9190611b42565b6108cc565b6040516102e19190611aea565b60405180910390f35b61030460048036038101906102ff9190611f05565b610934565b6040516103119190611a3f565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f557506103f4826109c8565b5b9050919050565b60606000805461040b90611f74565b80601f016020809104026020016040519081016040528092919081815260200182805461043790611f74565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b600061049982610a32565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104df82610685565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361054f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054690612017565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661056e610a7d565b73ffffffffffffffffffffffffffffffffffffffff16148061059d575061059c81610597610a7d565b610934565b5b6105dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d3906120a9565b60405180910390fd5b6105e68383610a85565b505050565b6105fc6105f6610a7d565b82610b3e565b61063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106329061213b565b60405180910390fd5b610646838383610bd3565b505050565b6106558282610ecc565b5050565b6106748383836040518060200160405280600081525061086a565b505050565b610682816110e9565b50565b60008061069183611237565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f9906121a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077290612239565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107d190611f74565b80601f01602080910402602001604051908101604052809291908181526020018280546107fd90611f74565b801561084a5780601f1061081f5761010080835404028352916020019161084a565b820191906000526020600020905b81548152906001019060200180831161082d57829003601f168201915b5050505050905090565b61086661085f610a7d565b8383611274565b5050565b61087b610875610a7d565b83610b3e565b6108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b19061213b565b60405180910390fd5b6108c6848484846113e0565b50505050565b60606108d782610a32565b60006108e161143c565b90506000815111610901576040518060200160405280600081525061092c565b8061090b84611453565b60405160200161091c929190612295565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a3b81611521565b610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a71906121a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610af883610685565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b4a83610685565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b8185610934565b5b80610bca57508373ffffffffffffffffffffffffffffffffffffffff16610bb28461048e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf382610685565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c409061232b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf906123bd565b60405180910390fd5b610cc58383836001611562565b8273ffffffffffffffffffffffffffffffffffffffff16610ce582610685565b73ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d329061232b565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ec78383836001611688565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612429565b60405180910390fd5b610f4481611521565b15610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90612495565b60405180910390fd5b610f92600083836001611562565b610f9b81611521565b15610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290612495565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110e5600083836001611688565b5050565b60006110f482610685565b9050611104816000846001611562565b61110d82610685565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611233816000846001611688565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990612501565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113d39190611a3f565b60405180910390a3505050565b6113eb848484610bd3565b6113f78484848461168e565b611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90612593565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161146284611815565b01905060008167ffffffffffffffff81111561148157611480611d57565b5b6040519080825280601f01601f1916602001820160405280156114b35781602001600182028036833780820191505090505b509050600082602001820190505b600115611516578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161150a576115096125b3565b5b049450600085036114c1575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661154383611237565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561168257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115f65780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115ee9190612611565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116815780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116799190612645565b925050819055505b5b50505050565b50505050565b60006116af8473ffffffffffffffffffffffffffffffffffffffff16611968565b15611808578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026116d8610a7d565b8786866040518563ffffffff1660e01b81526004016116fa94939291906126ce565b6020604051808303816000875af192505050801561173657506040513d601f19601f82011682018060405250810190611733919061272f565b60015b6117b8573d8060008114611766576040519150601f19603f3d011682016040523d82523d6000602084013e61176b565b606091505b5060008151036117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790612593565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061180d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611873577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611869576118686125b3565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118b0576d04ee2d6d415b85acef810000000083816118a6576118a56125b3565b5b0492506020810190505b662386f26fc1000083106118df57662386f26fc1000083816118d5576118d46125b3565b5b0492506010810190505b6305f5e1008310611908576305f5e10083816118fe576118fd6125b3565b5b0492506008810190505b612710831061192d576127108381611923576119226125b3565b5b0492506004810190505b606483106119505760648381611946576119456125b3565b5b0492506002810190505b600a831061195f576001810190505b80915050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119d48161199f565b81146119df57600080fd5b50565b6000813590506119f1816119cb565b92915050565b600060208284031215611a0d57611a0c611995565b5b6000611a1b848285016119e2565b91505092915050565b60008115159050919050565b611a3981611a24565b82525050565b6000602082019050611a546000830184611a30565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a94578082015181840152602081019050611a79565b60008484015250505050565b6000601f19601f8301169050919050565b6000611abc82611a5a565b611ac68185611a65565b9350611ad6818560208601611a76565b611adf81611aa0565b840191505092915050565b60006020820190508181036000830152611b048184611ab1565b905092915050565b6000819050919050565b611b1f81611b0c565b8114611b2a57600080fd5b50565b600081359050611b3c81611b16565b92915050565b600060208284031215611b5857611b57611995565b5b6000611b6684828501611b2d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b9a82611b6f565b9050919050565b611baa81611b8f565b82525050565b6000602082019050611bc56000830184611ba1565b92915050565b611bd481611b8f565b8114611bdf57600080fd5b50565b600081359050611bf181611bcb565b92915050565b60008060408385031215611c0e57611c0d611995565b5b6000611c1c85828601611be2565b9250506020611c2d85828601611b2d565b9150509250929050565b600080600060608486031215611c5057611c4f611995565b5b6000611c5e86828701611be2565b9350506020611c6f86828701611be2565b9250506040611c8086828701611b2d565b9150509250925092565b600060208284031215611ca057611c9f611995565b5b6000611cae84828501611be2565b91505092915050565b611cc081611b0c565b82525050565b6000602082019050611cdb6000830184611cb7565b92915050565b611cea81611a24565b8114611cf557600080fd5b50565b600081359050611d0781611ce1565b92915050565b60008060408385031215611d2457611d23611995565b5b6000611d3285828601611be2565b9250506020611d4385828601611cf8565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611d8f82611aa0565b810181811067ffffffffffffffff82111715611dae57611dad611d57565b5b80604052505050565b6000611dc161198b565b9050611dcd8282611d86565b919050565b600067ffffffffffffffff821115611ded57611dec611d57565b5b611df682611aa0565b9050602081019050919050565b82818337600083830152505050565b6000611e25611e2084611dd2565b611db7565b905082815260208101848484011115611e4157611e40611d52565b5b611e4c848285611e03565b509392505050565b600082601f830112611e6957611e68611d4d565b5b8135611e79848260208601611e12565b91505092915050565b60008060008060808587031215611e9c57611e9b611995565b5b6000611eaa87828801611be2565b9450506020611ebb87828801611be2565b9350506040611ecc87828801611b2d565b925050606085013567ffffffffffffffff811115611eed57611eec61199a565b5b611ef987828801611e54565b91505092959194509250565b60008060408385031215611f1c57611f1b611995565b5b6000611f2a85828601611be2565b9250506020611f3b85828601611be2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f8c57607f821691505b602082108103611f9f57611f9e611f45565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612001602183611a65565b915061200c82611fa5565b604082019050919050565b6000602082019050818103600083015261203081611ff4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612093603d83611a65565b915061209e82612037565b604082019050919050565b600060208201905081810360008301526120c281612086565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612125602d83611a65565b9150612130826120c9565b604082019050919050565b6000602082019050818103600083015261215481612118565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612191601883611a65565b915061219c8261215b565b602082019050919050565b600060208201905081810360008301526121c081612184565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612223602983611a65565b915061222e826121c7565b604082019050919050565b6000602082019050818103600083015261225281612216565b9050919050565b600081905092915050565b600061226f82611a5a565b6122798185612259565b9350612289818560208601611a76565b80840191505092915050565b60006122a18285612264565b91506122ad8284612264565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612315602583611a65565b9150612320826122b9565b604082019050919050565b6000602082019050818103600083015261234481612308565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006123a7602483611a65565b91506123b28261234b565b604082019050919050565b600060208201905081810360008301526123d68161239a565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612413602083611a65565b915061241e826123dd565b602082019050919050565b6000602082019050818103600083015261244281612406565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061247f601c83611a65565b915061248a82612449565b602082019050919050565b600060208201905081810360008301526124ae81612472565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006124eb601983611a65565b91506124f6826124b5565b602082019050919050565b6000602082019050818103600083015261251a816124de565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061257d603283611a65565b915061258882612521565b604082019050919050565b600060208201905081810360008301526125ac81612570565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061261c82611b0c565b915061262783611b0c565b925082820390508181111561263f5761263e6125e2565b5b92915050565b600061265082611b0c565b915061265b83611b0c565b9250828201905080821115612673576126726125e2565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60006126a082612679565b6126aa8185612684565b93506126ba818560208601611a76565b6126c381611aa0565b840191505092915050565b60006080820190506126e36000830187611ba1565b6126f06020830186611ba1565b6126fd6040830185611cb7565b818103606083015261270f8184612695565b905095945050505050565b600081519050612729816119cb565b92915050565b60006020828403121561274557612744611995565b5b60006127538482850161271a565b9150509291505056fea26469706673582212201e501432807dda2664b93757d2157531e89c1d1eb1ea68519ff994ad940b3ec564736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb46514610282578063b88d4fde1461029e578063c87b56dd146102ba578063e985e9c5146102ea576100f5565b806342966c68146101e85780636352211e1461020457806370a082311461023457806395d89b4114610264576100f5565b8063095ea7b3116100d3578063095ea7b31461017857806323b872dd1461019457806340c10f19146101b057806342842e0e146101cc576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f91906119f7565b61031a565b6040516101219190611a3f565b60405180910390f35b6101326103fc565b60405161013f9190611aea565b60405180910390f35b610162600480360381019061015d9190611b42565b61048e565b60405161016f9190611bb0565b60405180910390f35b610192600480360381019061018d9190611bf7565b6104d4565b005b6101ae60048036038101906101a99190611c37565b6105eb565b005b6101ca60048036038101906101c59190611bf7565b61064b565b005b6101e660048036038101906101e19190611c37565b610659565b005b61020260048036038101906101fd9190611b42565b610679565b005b61021e60048036038101906102199190611b42565b610685565b60405161022b9190611bb0565b60405180910390f35b61024e60048036038101906102499190611c8a565b61070b565b60405161025b9190611cc6565b60405180910390f35b61026c6107c2565b6040516102799190611aea565b60405180910390f35b61029c60048036038101906102979190611d0d565b610854565b005b6102b860048036038101906102b39190611e82565b61086a565b005b6102d460048036038101906102cf9190611b42565b6108cc565b6040516102e19190611aea565b60405180910390f35b61030460048036038101906102ff9190611f05565b610934565b6040516103119190611a3f565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f557506103f4826109c8565b5b9050919050565b60606000805461040b90611f74565b80601f016020809104026020016040519081016040528092919081815260200182805461043790611f74565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b600061049982610a32565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104df82610685565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361054f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054690612017565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661056e610a7d565b73ffffffffffffffffffffffffffffffffffffffff16148061059d575061059c81610597610a7d565b610934565b5b6105dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d3906120a9565b60405180910390fd5b6105e68383610a85565b505050565b6105fc6105f6610a7d565b82610b3e565b61063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106329061213b565b60405180910390fd5b610646838383610bd3565b505050565b6106558282610ecc565b5050565b6106748383836040518060200160405280600081525061086a565b505050565b610682816110e9565b50565b60008061069183611237565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f9906121a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077290612239565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107d190611f74565b80601f01602080910402602001604051908101604052809291908181526020018280546107fd90611f74565b801561084a5780601f1061081f5761010080835404028352916020019161084a565b820191906000526020600020905b81548152906001019060200180831161082d57829003601f168201915b5050505050905090565b61086661085f610a7d565b8383611274565b5050565b61087b610875610a7d565b83610b3e565b6108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b19061213b565b60405180910390fd5b6108c6848484846113e0565b50505050565b60606108d782610a32565b60006108e161143c565b90506000815111610901576040518060200160405280600081525061092c565b8061090b84611453565b60405160200161091c929190612295565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a3b81611521565b610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a71906121a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610af883610685565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b4a83610685565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b8185610934565b5b80610bca57508373ffffffffffffffffffffffffffffffffffffffff16610bb28461048e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf382610685565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c409061232b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf906123bd565b60405180910390fd5b610cc58383836001611562565b8273ffffffffffffffffffffffffffffffffffffffff16610ce582610685565b73ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d329061232b565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ec78383836001611688565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612429565b60405180910390fd5b610f4481611521565b15610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90612495565b60405180910390fd5b610f92600083836001611562565b610f9b81611521565b15610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290612495565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110e5600083836001611688565b5050565b60006110f482610685565b9050611104816000846001611562565b61110d82610685565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611233816000846001611688565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990612501565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113d39190611a3f565b60405180910390a3505050565b6113eb848484610bd3565b6113f78484848461168e565b611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90612593565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161146284611815565b01905060008167ffffffffffffffff81111561148157611480611d57565b5b6040519080825280601f01601f1916602001820160405280156114b35781602001600182028036833780820191505090505b509050600082602001820190505b600115611516578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161150a576115096125b3565b5b049450600085036114c1575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661154383611237565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561168257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115f65780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115ee9190612611565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116815780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116799190612645565b925050819055505b5b50505050565b50505050565b60006116af8473ffffffffffffffffffffffffffffffffffffffff16611968565b15611808578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026116d8610a7d565b8786866040518563ffffffff1660e01b81526004016116fa94939291906126ce565b6020604051808303816000875af192505050801561173657506040513d601f19601f82011682018060405250810190611733919061272f565b60015b6117b8573d8060008114611766576040519150601f19603f3d011682016040523d82523d6000602084013e61176b565b606091505b5060008151036117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790612593565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061180d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611873577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611869576118686125b3565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118b0576d04ee2d6d415b85acef810000000083816118a6576118a56125b3565b5b0492506020810190505b662386f26fc1000083106118df57662386f26fc1000083816118d5576118d46125b3565b5b0492506010810190505b6305f5e1008310611908576305f5e10083816118fe576118fd6125b3565b5b0492506008810190505b612710831061192d576127108381611923576119226125b3565b5b0492506004810190505b606483106119505760648381611946576119456125b3565b5b0492506002810190505b600a831061195f576001810190505b80915050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119d48161199f565b81146119df57600080fd5b50565b6000813590506119f1816119cb565b92915050565b600060208284031215611a0d57611a0c611995565b5b6000611a1b848285016119e2565b91505092915050565b60008115159050919050565b611a3981611a24565b82525050565b6000602082019050611a546000830184611a30565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a94578082015181840152602081019050611a79565b60008484015250505050565b6000601f19601f8301169050919050565b6000611abc82611a5a565b611ac68185611a65565b9350611ad6818560208601611a76565b611adf81611aa0565b840191505092915050565b60006020820190508181036000830152611b048184611ab1565b905092915050565b6000819050919050565b611b1f81611b0c565b8114611b2a57600080fd5b50565b600081359050611b3c81611b16565b92915050565b600060208284031215611b5857611b57611995565b5b6000611b6684828501611b2d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b9a82611b6f565b9050919050565b611baa81611b8f565b82525050565b6000602082019050611bc56000830184611ba1565b92915050565b611bd481611b8f565b8114611bdf57600080fd5b50565b600081359050611bf181611bcb565b92915050565b60008060408385031215611c0e57611c0d611995565b5b6000611c1c85828601611be2565b9250506020611c2d85828601611b2d565b9150509250929050565b600080600060608486031215611c5057611c4f611995565b5b6000611c5e86828701611be2565b9350506020611c6f86828701611be2565b9250506040611c8086828701611b2d565b9150509250925092565b600060208284031215611ca057611c9f611995565b5b6000611cae84828501611be2565b91505092915050565b611cc081611b0c565b82525050565b6000602082019050611cdb6000830184611cb7565b92915050565b611cea81611a24565b8114611cf557600080fd5b50565b600081359050611d0781611ce1565b92915050565b60008060408385031215611d2457611d23611995565b5b6000611d3285828601611be2565b9250506020611d4385828601611cf8565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611d8f82611aa0565b810181811067ffffffffffffffff82111715611dae57611dad611d57565b5b80604052505050565b6000611dc161198b565b9050611dcd8282611d86565b919050565b600067ffffffffffffffff821115611ded57611dec611d57565b5b611df682611aa0565b9050602081019050919050565b82818337600083830152505050565b6000611e25611e2084611dd2565b611db7565b905082815260208101848484011115611e4157611e40611d52565b5b611e4c848285611e03565b509392505050565b600082601f830112611e6957611e68611d4d565b5b8135611e79848260208601611e12565b91505092915050565b60008060008060808587031215611e9c57611e9b611995565b5b6000611eaa87828801611be2565b9450506020611ebb87828801611be2565b9350506040611ecc87828801611b2d565b925050606085013567ffffffffffffffff811115611eed57611eec61199a565b5b611ef987828801611e54565b91505092959194509250565b60008060408385031215611f1c57611f1b611995565b5b6000611f2a85828601611be2565b9250506020611f3b85828601611be2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f8c57607f821691505b602082108103611f9f57611f9e611f45565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612001602183611a65565b915061200c82611fa5565b604082019050919050565b6000602082019050818103600083015261203081611ff4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612093603d83611a65565b915061209e82612037565b604082019050919050565b600060208201905081810360008301526120c281612086565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612125602d83611a65565b9150612130826120c9565b604082019050919050565b6000602082019050818103600083015261215481612118565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612191601883611a65565b915061219c8261215b565b602082019050919050565b600060208201905081810360008301526121c081612184565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612223602983611a65565b915061222e826121c7565b604082019050919050565b6000602082019050818103600083015261225281612216565b9050919050565b600081905092915050565b600061226f82611a5a565b6122798185612259565b9350612289818560208601611a76565b80840191505092915050565b60006122a18285612264565b91506122ad8284612264565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612315602583611a65565b9150612320826122b9565b604082019050919050565b6000602082019050818103600083015261234481612308565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006123a7602483611a65565b91506123b28261234b565b604082019050919050565b600060208201905081810360008301526123d68161239a565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612413602083611a65565b915061241e826123dd565b602082019050919050565b6000602082019050818103600083015261244281612406565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061247f601c83611a65565b915061248a82612449565b602082019050919050565b600060208201905081810360008301526124ae81612472565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006124eb601983611a65565b91506124f6826124b5565b602082019050919050565b6000602082019050818103600083015261251a816124de565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061257d603283611a65565b915061258882612521565b604082019050919050565b600060208201905081810360008301526125ac81612570565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061261c82611b0c565b915061262783611b0c565b925082820390508181111561263f5761263e6125e2565b5b92915050565b600061265082611b0c565b915061265b83611b0c565b9250828201905080821115612673576126726125e2565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60006126a082612679565b6126aa8185612684565b93506126ba818560208601611a76565b6126c381611aa0565b840191505092915050565b60006080820190506126e36000830187611ba1565b6126f06020830186611ba1565b6126fd6040830185611cb7565b818103606083015261270f8184612695565b905095945050505050565b600081519050612729816119cb565b92915050565b60006020828403121561274557612744611995565b5b60006127538482850161271a565b9150509291505056fea26469706673582212201e501432807dda2664b93757d2157531e89c1d1eb1ea68519ff994ad940b3ec564736f6c63430008110033",
    "immutableReferences": {},
    "generatedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:5231:11",
                "statements": [
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "66:40:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "77:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "93:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "87:5:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "87:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "77:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "49:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "59:6:11",
                                "type": ""
                            }
                        ],
                        "src": "7:99:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "140:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "157:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "160:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "150:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "150:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "150:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "254:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "257:4:11",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "247:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "247:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "247:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "278:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "281:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "271:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "271:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "271:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "112:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "326:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "343:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "346:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "336:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "336:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "336:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "440:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "443:4:11",
                                                "type": "",
                                                "value": "0x22"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "433:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "433:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "433:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "464:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "467:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "457:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "457:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "457:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x22",
                        "nodeType": "YulFunctionDefinition",
                        "src": "298:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "535:269:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "545:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "559:4:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "565:1:11",
                                                "type": "",
                                                "value": "2"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "555:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "555:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "545:6:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "576:38:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "606:4:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "612:1:11",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "602:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "602:12:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "580:18:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "653:51:11",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "667:27:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "681:6:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "689:4:11",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "677:3:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "677:17:11"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "667:6:11"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "633:18:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "626:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "626:26:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "623:81:11"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "756:42:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x22",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "770:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "770:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "770:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "720:18:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "743:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "751:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "740:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "740:14:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "717:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "717:38:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "714:84:11"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "519:4:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "528:6:11",
                                "type": ""
                            }
                        ],
                        "src": "484:320:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "864:87:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "874:11:11",
                                    "value": {
                                        "name": "ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "882:3:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "874:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "902:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "name": "ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "905:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "895:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "895:14:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "895:14:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "918:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "936:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "939:4:11",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "926:9:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "926:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "918:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_dataslot_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "ptr",
                                "nodeType": "YulTypedName",
                                "src": "851:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "859:4:11",
                                "type": ""
                            }
                        ],
                        "src": "810:141:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1001:49:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1011:33:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1029:5:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1036:2:11",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1025:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1025:14:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1041:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "1021:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1021:23:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "1011:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "divide_by_32_ceil",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "984:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "994:6:11",
                                "type": ""
                            }
                        ],
                        "src": "957:93:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1109:54:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1119:37:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "bits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1144:4:11"
                                            },
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1150:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1140:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1140:16:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "newValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "1119:8:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "shift_left_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "bits",
                                "nodeType": "YulTypedName",
                                "src": "1084:4:11",
                                "type": ""
                            },
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1090:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "newValue",
                                "nodeType": "YulTypedName",
                                "src": "1100:8:11",
                                "type": ""
                            }
                        ],
                        "src": "1056:107:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1245:317:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1255:35:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBytes",
                                                "nodeType": "YulIdentifier",
                                                "src": "1276:10:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1288:1:11",
                                                "type": "",
                                                "value": "8"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "1272:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1272:18:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "shiftBits",
                                            "nodeType": "YulTypedName",
                                            "src": "1259:9:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1299:109:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1330:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1341:66:11",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shift_left_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "1311:18:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1311:97:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "mask",
                                            "nodeType": "YulTypedName",
                                            "src": "1303:4:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1417:51:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1448:9:11"
                                            },
                                            {
                                                "name": "toInsert",
                                                "nodeType": "YulIdentifier",
                                                "src": "1459:8:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shift_left_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:18:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1429:39:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "toInsert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1417:8:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1477:30:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1490:5:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "mask",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1501:4:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1497:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1497:9:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "1486:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1486:21:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1477:5:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1516:40:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1529:5:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "toInsert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1540:8:11"
                                                    },
                                                    {
                                                        "name": "mask",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1550:4:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1536:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1536:19:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "1526:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1526:30:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "1516:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "update_byte_slice_dynamic32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1206:5:11",
                                "type": ""
                            },
                            {
                                "name": "shiftBytes",
                                "nodeType": "YulTypedName",
                                "src": "1213:10:11",
                                "type": ""
                            },
                            {
                                "name": "toInsert",
                                "nodeType": "YulTypedName",
                                "src": "1225:8:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "1238:6:11",
                                "type": ""
                            }
                        ],
                        "src": "1169:393:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1613:32:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1623:16:11",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:5:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "1623:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1595:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "1605:7:11",
                                "type": ""
                            }
                        ],
                        "src": "1568:77:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1683:28:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1693:12:11",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1700:5:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "1693:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "identity",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1669:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "1679:3:11",
                                "type": ""
                            }
                        ],
                        "src": "1651:60:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1777:82:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1787:66:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1845:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1827:17:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1827:24:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "identity",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1818:8:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1818:34:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "1800:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1800:53:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "converted",
                                            "nodeType": "YulIdentifier",
                                            "src": "1787:9:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "convert_t_uint256_to_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1757:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "converted",
                                "nodeType": "YulTypedName",
                                "src": "1767:9:11",
                                "type": ""
                            }
                        ],
                        "src": "1717:142:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1912:28:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1922:12:11",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:5:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "1922:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "prepare_store_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1898:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "1908:3:11",
                                "type": ""
                            }
                        ],
                        "src": "1865:75:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2022:193:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2032:63:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value_0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2087:7:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "convert_t_uint256_to_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2056:30:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2056:39:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "convertedValue_0",
                                            "nodeType": "YulTypedName",
                                            "src": "2036:16:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "2111:4:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "slot",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2151:4:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2145:5:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2145:11:11"
                                                    },
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2158:6:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "convertedValue_0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2190:16:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "prepare_store_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2166:23:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2166:41:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "update_byte_slice_dynamic32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2117:27:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2117:91:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2104:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2104:105:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2104:105:11"
                                }
                            ]
                        },
                        "name": "update_storage_value_t_uint256_to_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "1999:4:11",
                                "type": ""
                            },
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2005:6:11",
                                "type": ""
                            },
                            {
                                "name": "value_0",
                                "nodeType": "YulTypedName",
                                "src": "2013:7:11",
                                "type": ""
                            }
                        ],
                        "src": "1946:269:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2270:24:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2280:8:11",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2287:1:11",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "2280:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "zero_value_for_split_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "2266:3:11",
                                "type": ""
                            }
                        ],
                        "src": "2221:73:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2353:136:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2363:46:11",
                                    "value": {
                                        "arguments": [],
                                        "functionName": {
                                            "name": "zero_value_for_split_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2377:30:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2377:32:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "zero_0",
                                            "nodeType": "YulTypedName",
                                            "src": "2367:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "2462:4:11"
                                            },
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2468:6:11"
                                            },
                                            {
                                                "name": "zero_0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2476:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "update_storage_value_t_uint256_to_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2418:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2418:65:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2418:65:11"
                                }
                            ]
                        },
                        "name": "storage_set_to_zero_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "2339:4:11",
                                "type": ""
                            },
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2345:6:11",
                                "type": ""
                            }
                        ],
                        "src": "2300:189:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2545:136:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2612:63:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2656:5:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2663:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "storage_set_to_zero_t_uint256",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2626:29:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2626:39:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2626:39:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2565:5:11"
                                            },
                                            {
                                                "name": "end",
                                                "nodeType": "YulIdentifier",
                                                "src": "2572:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2562:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2562:14:11"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "2577:26:11",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "2579:22:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2592:5:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2599:1:11",
                                                            "type": "",
                                                            "value": "1"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2588:3:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2588:13:11"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "start",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2579:5:11"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "2559:2:11",
                                        "statements": []
                                    },
                                    "src": "2555:120:11"
                                }
                            ]
                        },
                        "name": "clear_storage_range_t_bytes1",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "start",
                                "nodeType": "YulTypedName",
                                "src": "2533:5:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "2540:3:11",
                                "type": ""
                            }
                        ],
                        "src": "2495:186:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2766:464:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2792:431:11",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2806:54:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2854:5:11"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "array_dataslot_t_string_storage",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2822:31:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2822:38:11"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "dataArea",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2810:8:11",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2873:63:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "dataArea",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2896:8:11"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "startIndex",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2924:10:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "divide_by_32_ceil",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2906:17:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2906:29:11"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2892:3:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2892:44:11"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "deleteStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2877:11:11",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3093:27:11",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3095:23:11",
                                                            "value": {
                                                                "name": "dataArea",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3110:8:11"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "deleteStart",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3095:11:11"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "startIndex",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3077:10:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3089:2:11",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3074:2:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3074:18:11"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3071:49:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "deleteStart",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3162:11:11"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dataArea",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3179:8:11"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "len",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3207:3:11"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "divide_by_32_ceil",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3189:17:11"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3189:22:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3175:3:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3175:37:11"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "clear_storage_range_t_bytes1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3133:28:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3133:80:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3133:80:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "2783:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2788:2:11",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2780:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2780:11:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2777:446:11"
                                }
                            ]
                        },
                        "name": "clean_up_bytearray_end_slots_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "2742:5:11",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "2749:3:11",
                                "type": ""
                            },
                            {
                                "name": "startIndex",
                                "nodeType": "YulTypedName",
                                "src": "2754:10:11",
                                "type": ""
                            }
                        ],
                        "src": "2687:543:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3299:54:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3309:37:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "bits",
                                                "nodeType": "YulIdentifier",
                                                "src": "3334:4:11"
                                            },
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3340:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3330:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3330:16:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "newValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "3309:8:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "shift_right_unsigned_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "bits",
                                "nodeType": "YulTypedName",
                                "src": "3274:4:11",
                                "type": ""
                            },
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3280:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "newValue",
                                "nodeType": "YulTypedName",
                                "src": "3290:8:11",
                                "type": ""
                            }
                        ],
                        "src": "3236:117:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3410:118:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3420:68:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3469:1:11",
                                                                "type": "",
                                                                "value": "8"
                                                            },
                                                            {
                                                                "name": "bytes",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3472:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "mul",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3465:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3465:13:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3484:1:11",
                                                                "type": "",
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3480:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3480:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shift_right_unsigned_dynamic",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3436:28:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3436:51:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "not",
                                            "nodeType": "YulIdentifier",
                                            "src": "3432:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3432:56:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "mask",
                                            "nodeType": "YulTypedName",
                                            "src": "3424:4:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3497:25:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3511:4:11"
                                            },
                                            {
                                                "name": "mask",
                                                "nodeType": "YulIdentifier",
                                                "src": "3517:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3507:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3507:15:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "3497:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "mask_bytes_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "3387:4:11",
                                "type": ""
                            },
                            {
                                "name": "bytes",
                                "nodeType": "YulTypedName",
                                "src": "3393:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "3403:6:11",
                                "type": ""
                            }
                        ],
                        "src": "3359:169:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3614:214:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3747:37:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3774:4:11"
                                            },
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "3780:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mask_bytes_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "3755:18:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3755:29:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "3747:4:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3793:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3804:4:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3814:1:11",
                                                        "type": "",
                                                        "value": "2"
                                                    },
                                                    {
                                                        "name": "len",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3817:3:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "mul",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3810:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3810:11:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "3801:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3801:21:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "used",
                                            "nodeType": "YulIdentifier",
                                            "src": "3793:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "3595:4:11",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "3601:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "used",
                                "nodeType": "YulTypedName",
                                "src": "3609:4:11",
                                "type": ""
                            }
                        ],
                        "src": "3533:295:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3925:1303:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3936:51:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "3983:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_string_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3950:32:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3950:37:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "newLen",
                                            "nodeType": "YulTypedName",
                                            "src": "3940:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4072:22:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4074:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4074:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4074:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4044:6:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4052:18:11",
                                                "type": "",
                                                "value": "0xffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4041:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4041:30:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4038:56:11"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4104:52:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "slot",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4150:4:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4144:5:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4144:11:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "extract_byte_array_length",
                                            "nodeType": "YulIdentifier",
                                            "src": "4118:25:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4118:38:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "oldLen",
                                            "nodeType": "YulTypedName",
                                            "src": "4108:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "4249:4:11"
                                            },
                                            {
                                                "name": "oldLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4255:6:11"
                                            },
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4263:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "clean_up_bytearray_end_slots_t_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "4203:45:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4203:67:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4203:67:11"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4280:18:11",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4297:1:11",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulTypedName",
                                            "src": "4284:9:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4308:17:11",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4321:4:11",
                                        "type": "",
                                        "value": "0x20"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "4308:9:11"
                                        }
                                    ]
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "4372:611:11",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4386:37:11",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4405:6:11"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4417:4:11",
                                                                            "type": "",
                                                                            "value": "0x1f"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4413:3:11"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4413:9:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "and",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4401:3:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4401:22:11"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "loopEnd",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4390:7:11",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4437:51:11",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4483:4:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "array_dataslot_t_string_storage",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4451:31:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4451:37:11"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "dstPtr",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4441:6:11",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4501:10:11",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4510:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "i",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4505:1:11",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4569:163:11",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4594:6:11"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "src",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4612:3:11"
                                                                                            },
                                                                                            {
                                                                                                "name": "srcOffset",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4617:9:11"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4608:3:11"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4608:19:11"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4602:5:11"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4602:26:11"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4587:6:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4587:42:11"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "4587:42:11"
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4646:24:11",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4660:6:11"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4668:1:11",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4656:3:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4656:14:11"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "dstPtr",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4646:6:11"
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4687:31:11",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "srcOffset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4704:9:11"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4715:2:11",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4700:3:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4700:18:11"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "srcOffset",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4687:9:11"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4535:1:11"
                                                                },
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4538:7:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4532:2:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4532:14:11"
                                                        },
                                                        "nodeType": "YulForLoop",
                                                        "post": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4547:21:11",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4549:17:11",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4558:1:11"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4561:4:11",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4554:3:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4554:12:11"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4549:1:11"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "pre": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4528:3:11",
                                                            "statements": []
                                                        },
                                                        "src": "4524:208:11"
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4768:156:11",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulVariableDeclaration",
                                                                    "src": "4786:43:11",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4813:3:11"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4818:9:11"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4809:3:11"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4809:19:11"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4803:5:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4803:26:11"
                                                                    },
                                                                    "variables": [
                                                                        {
                                                                            "name": "lastValue",
                                                                            "nodeType": "YulTypedName",
                                                                            "src": "4790:9:11",
                                                                            "type": ""
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4853:6:11"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "lastValue",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4880:9:11"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "newLen",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4895:6:11"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4903:4:11",
                                                                                                "type": "",
                                                                                                "value": "0x1f"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4891:3:11"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4891:17:11"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mask_bytes_dynamic",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4861:18:11"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4861:48:11"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4846:6:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4846:64:11"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "4846:64:11"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4751:7:11"
                                                                },
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4760:6:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4748:2:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4748:19:11"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "4745:179:11"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4944:4:11"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "newLen",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4958:6:11"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4966:1:11",
                                                                                    "type": "",
                                                                                    "value": "2"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mul",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4954:3:11"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4954:14:11"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4970:1:11",
                                                                            "type": "",
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4950:3:11"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4950:22:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4937:6:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4937:36:11"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "4937:36:11"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "4365:618:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4370:1:11",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "5000:222:11",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "5014:14:11",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5027:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulTypedName",
                                                                "src": "5018:5:11",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5051:67:11",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "5069:35:11",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5088:3:11"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5093:9:11"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5084:3:11"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5084:19:11"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5078:5:11"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5078:26:11"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5069:5:11"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5044:6:11"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "5041:77:11"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5138:4:11"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5197:5:11"
                                                                        },
                                                                        {
                                                                            "name": "newLen",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5204:6:11"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5144:52:11"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "5144:67:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5131:6:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5131:81:11"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "5131:81:11"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "4992:230:11",
                                            "value": "default"
                                        }
                                    ],
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4345:6:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4353:2:11",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4342:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4342:14:11"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "4335:887:11"
                                }
                            ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "3914:4:11",
                                "type": ""
                            },
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "3920:3:11",
                                "type": ""
                            }
                        ],
                        "src": "3833:1395:11"
                    }
                ]
            },
            "contents": "{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function array_dataslot_t_string_storage(ptr) -> data {\n        data := ptr\n\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n\n    }\n\n    function divide_by_32_ceil(value) -> result {\n        result := div(add(value, 31), 32)\n    }\n\n    function shift_left_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shl(bits, value)\n\n    }\n\n    function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n        let shiftBits := mul(shiftBytes, 8)\n        let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        toInsert := shift_left_dynamic(shiftBits, toInsert)\n        value := and(value, not(mask))\n        result := or(value, and(toInsert, mask))\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_uint256_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n    }\n\n    function prepare_store_t_uint256(value) -> ret {\n        ret := value\n    }\n\n    function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n        let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n        sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n    }\n\n    function zero_value_for_split_t_uint256() -> ret {\n        ret := 0\n    }\n\n    function storage_set_to_zero_t_uint256(slot, offset) {\n        let zero_0 := zero_value_for_split_t_uint256()\n        update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n    }\n\n    function clear_storage_range_t_bytes1(start, end) {\n        for {} lt(start, end) { start := add(start, 1) }\n        {\n            storage_set_to_zero_t_uint256(start, 0)\n        }\n    }\n\n    function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n        if gt(len, 31) {\n            let dataArea := array_dataslot_t_string_storage(array)\n            let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n            // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n            if lt(startIndex, 32) { deleteStart := dataArea }\n            clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n        }\n\n    }\n\n    function shift_right_unsigned_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shr(bits, value)\n\n    }\n\n    function mask_bytes_dynamic(data, bytes) -> result {\n        let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n        result := and(data, mask)\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n        // we want to save only elements that are part of the array after resizing\n        // others should be set to zero\n        data := mask_bytes_dynamic(data, len)\n        used := or(data, mul(2, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n        let newLen := array_length_t_string_memory_ptr(src)\n        // Make sure array length is sane\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n        let oldLen := extract_byte_array_length(sload(slot))\n\n        // potentially truncate data\n        clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n        let srcOffset := 0\n\n        srcOffset := 0x20\n\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(0x1f))\n\n            let dstPtr := array_dataslot_t_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 32)\n            }\n            if lt(loopEnd, newLen) {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n            }\n            sstore(slot, add(mul(newLen, 2), 1))\n        }\n        default {\n            let value := 0\n            if newLen {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n\n}\n",
            "id": 11,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "deployedGeneratedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:25699:11",
                "statements": [
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "47:35:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "57:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "73:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "67:5:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "67:9:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "57:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "allocate_unbounded",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "40:6:11",
                                "type": ""
                            }
                        ],
                        "src": "7:75:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "177:28:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "194:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "197:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "187:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "187:12:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "187:12:11"
                                }
                            ]
                        },
                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                        "nodeType": "YulFunctionDefinition",
                        "src": "88:117:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "300:28:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "317:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "320:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "310:12:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "310:12:11"
                                }
                            ]
                        },
                        "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                        "nodeType": "YulFunctionDefinition",
                        "src": "211:117:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "378:105:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "388:89:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "403:5:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "410:66:11",
                                                "type": "",
                                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "399:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "399:78:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "388:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "360:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "370:7:11",
                                "type": ""
                            }
                        ],
                        "src": "334:149:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "531:78:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "587:16:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "596:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "599:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "589:6:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "589:12:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "589:12:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "554:5:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "578:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_bytes4",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "561:16:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "561:23:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "551:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "551:34:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "544:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "544:42:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "541:62:11"
                                }
                            ]
                        },
                        "name": "validator_revert_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "524:5:11",
                                "type": ""
                            }
                        ],
                        "src": "489:120:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "666:86:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "676:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "698:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "685:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "685:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "676:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "740:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_bytes4",
                                            "nodeType": "YulIdentifier",
                                            "src": "714:25:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "714:32:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "714:32:11"
                                }
                            ]
                        },
                        "name": "abi_decode_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "644:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "652:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "660:5:11",
                                "type": ""
                            }
                        ],
                        "src": "615:137:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "823:262:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "869:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "871:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "871:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "871:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "844:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "853:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "840:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "840:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "865:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "836:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "836:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "833:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "962:116:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "977:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "991:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "981:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "1006:62:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1040:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1051:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1036:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1036:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1060:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_bytes4",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1016:19:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1016:52:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1006:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "793:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "804:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "816:6:11",
                                "type": ""
                            }
                        ],
                        "src": "758:327:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1133:48:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1143:32:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1168:5:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1161:6:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1161:13:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1154:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1154:21:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "1143:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1115:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "1125:7:11",
                                "type": ""
                            }
                        ],
                        "src": "1091:90:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1246:50:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "1263:3:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1283:5:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_bool",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1268:14:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1268:21:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1256:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1256:34:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1256:34:11"
                                }
                            ]
                        },
                        "name": "abi_encode_t_bool_to_t_bool_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1234:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "1241:3:11",
                                "type": ""
                            }
                        ],
                        "src": "1187:109:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1394:118:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1404:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1416:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1427:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1412:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1412:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "1404:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "1478:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1491:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1502:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1487:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1487:17:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_bool_to_t_bool_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "1440:37:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1440:65:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1440:65:11"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1366:9:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1378:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "1389:4:11",
                                "type": ""
                            }
                        ],
                        "src": "1302:210:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1577:40:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1588:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1604:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1598:5:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1598:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1588:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1560:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "1570:6:11",
                                "type": ""
                            }
                        ],
                        "src": "1518:99:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1719:73:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "1736:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1741:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1729:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1729:19:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1729:19:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1757:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "1776:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1781:4:11",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1772:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1772:14:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "updated_pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "1757:11:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "1691:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "1696:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "updated_pos",
                                "nodeType": "YulTypedName",
                                "src": "1707:11:11",
                                "type": ""
                            }
                        ],
                        "src": "1623:169:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1860:184:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1870:10:11",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1879:1:11",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "1874:1:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1939:63:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1964:3:11"
                                                                },
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1969:1:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1960:3:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1960:11:11"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "src",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1983:3:11"
                                                                        },
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1988:1:11"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1979:3:11"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "1979:11:11"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mload",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1973:5:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1973:18:11"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1953:6:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1953:39:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1953:39:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "1900:1:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1903:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1897:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1897:13:11"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "1911:19:11",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1913:15:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1922:1:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1925:2:11",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1918:3:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1918:10:11"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1913:1:11"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "1893:3:11",
                                        "statements": []
                                    },
                                    "src": "1889:113:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2022:3:11"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2027:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2018:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2018:16:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2036:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2011:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2011:27:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2011:27:11"
                                }
                            ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "1842:3:11",
                                "type": ""
                            },
                            {
                                "name": "dst",
                                "nodeType": "YulTypedName",
                                "src": "1847:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "1852:6:11",
                                "type": ""
                            }
                        ],
                        "src": "1798:246:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2098:54:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2108:38:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2126:5:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2133:2:11",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2122:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2122:14:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2142:2:11",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2138:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2138:7:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2118:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2118:28:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "2108:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "round_up_to_mul_of_32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2081:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "2091:6:11",
                                "type": ""
                            }
                        ],
                        "src": "2050:102:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2250:285:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2260:53:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2307:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_string_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2274:32:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2274:39:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "2264:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2322:78:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "2388:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2393:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "2329:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2329:71:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "2322:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2448:5:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2455:4:11",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2444:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2444:16:11"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "2462:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2467:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "2409:34:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2409:65:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2409:65:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2483:46:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "2494:3:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2521:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "round_up_to_mul_of_32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2499:21:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2499:29:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2490:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2490:39:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "2483:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2231:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "2238:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "2246:3:11",
                                "type": ""
                            }
                        ],
                        "src": "2158:377:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2659:195:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2669:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2681:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2692:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2677:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2677:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2669:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2716:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2727:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2712:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2712:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2735:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2741:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2731:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2731:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2705:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2705:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2705:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2761:86:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2833:6:11"
                                            },
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "2842:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "2769:63:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2769:78:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2761:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2631:9:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2643:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2654:4:11",
                                "type": ""
                            }
                        ],
                        "src": "2541:313:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2905:32:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2915:16:11",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2926:5:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "2915:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2887:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "2897:7:11",
                                "type": ""
                            }
                        ],
                        "src": "2860:77:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2986:79:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "3043:16:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3052:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3055:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3045:6:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3045:12:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3045:12:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3009:5:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3034:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3016:17:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3016:24:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3006:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3006:35:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "2999:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2999:43:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2996:63:11"
                                }
                            ]
                        },
                        "name": "validator_revert_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2979:5:11",
                                "type": ""
                            }
                        ],
                        "src": "2943:122:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3123:87:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3133:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "3155:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3142:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3142:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3133:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3198:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "3171:26:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3171:33:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3171:33:11"
                                }
                            ]
                        },
                        "name": "abi_decode_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "3101:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "3109:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3117:5:11",
                                "type": ""
                            }
                        ],
                        "src": "3071:139:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3282:263:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "3328:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3330:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3330:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3330:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3303:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3312:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3299:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3299:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3324:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3295:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3295:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3292:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "3421:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "3436:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3450:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "3440:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "3465:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3500:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3511:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3496:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3496:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3520:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3475:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3475:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3465:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3252:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "3263:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3275:6:11",
                                "type": ""
                            }
                        ],
                        "src": "3216:329:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3596:81:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3606:65:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3621:5:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3628:42:11",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3617:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3617:54:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "3606:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3578:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "3588:7:11",
                                "type": ""
                            }
                        ],
                        "src": "3551:126:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3728:51:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3738:35:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3767:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint160",
                                            "nodeType": "YulIdentifier",
                                            "src": "3749:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3749:24:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "3738:7:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3710:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "3720:7:11",
                                "type": ""
                            }
                        ],
                        "src": "3683:96:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3850:53:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3867:3:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3890:5:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3872:17:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3872:24:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3860:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3860:37:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3860:37:11"
                                }
                            ]
                        },
                        "name": "abi_encode_t_address_to_t_address_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3838:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "3845:3:11",
                                "type": ""
                            }
                        ],
                        "src": "3785:118:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4007:124:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4017:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4029:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4040:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4025:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4025:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "4017:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "4097:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4110:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4121:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4106:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4106:17:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_address_to_t_address_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "4053:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4053:71:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4053:71:11"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3979:9:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3991:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "4002:4:11",
                                "type": ""
                            }
                        ],
                        "src": "3909:222:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4180:79:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4237:16:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4246:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4249:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4239:6:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4239:12:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4239:12:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4203:5:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4228:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_address",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4210:17:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4210:24:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4200:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4200:35:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "4193:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4193:43:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4190:63:11"
                                }
                            ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "4173:5:11",
                                "type": ""
                            }
                        ],
                        "src": "4137:122:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4317:87:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4327:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "4349:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4336:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4336:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4327:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "4392:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "4365:26:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4365:33:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4365:33:11"
                                }
                            ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "4295:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "4303:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "4311:5:11",
                                "type": ""
                            }
                        ],
                        "src": "4265:139:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4493:391:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4539:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4541:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4541:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4541:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4514:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4523:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4510:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4510:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4535:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4506:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4506:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4503:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "4632:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "4647:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4661:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "4651:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "4676:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4711:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4722:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4707:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4707:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4731:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4686:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4686:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4676:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "4759:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "4774:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4788:2:11",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "4778:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "4804:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4839:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4850:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4835:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4835:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4859:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4814:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4814:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4804:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4455:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4466:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4478:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "4486:6:11",
                                "type": ""
                            }
                        ],
                        "src": "4410:474:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4990:519:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5036:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5038:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5038:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5038:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5011:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5020:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5007:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5007:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5032:2:11",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5003:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5003:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5000:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5129:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5144:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5158:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5148:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5173:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5208:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5219:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5204:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5204:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5228:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5183:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5183:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5173:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5256:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5271:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5285:2:11",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5275:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5301:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5336:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5347:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5332:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5332:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5356:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5311:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5311:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5301:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5384:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5399:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5413:2:11",
                                                "type": "",
                                                "value": "64"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5403:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5429:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5464:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5475:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5460:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5460:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5484:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5439:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5439:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5429:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4944:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4955:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4967:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "4975:6:11",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "4983:6:11",
                                "type": ""
                            }
                        ],
                        "src": "4890:619:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5581:263:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5627:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5629:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5629:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5629:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5602:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5611:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5598:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5598:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5623:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5594:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5594:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5591:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5720:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5735:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5749:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5739:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5764:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5799:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5810:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5795:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5795:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5819:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5774:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5774:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5764:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5551:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5562:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5574:6:11",
                                "type": ""
                            }
                        ],
                        "src": "5515:329:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5915:53:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5932:3:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5955:5:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5937:17:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5937:24:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5925:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5925:37:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5925:37:11"
                                }
                            ]
                        },
                        "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "5903:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "5910:3:11",
                                "type": ""
                            }
                        ],
                        "src": "5850:118:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6072:124:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6082:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6094:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6105:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6090:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6090:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6082:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "6162:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6175:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6186:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6171:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6171:17:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "6118:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6118:71:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6118:71:11"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6044:9:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6056:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6067:4:11",
                                "type": ""
                            }
                        ],
                        "src": "5974:222:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6242:76:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6296:16:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6305:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6308:1:11",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6298:6:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6298:12:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6298:12:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6265:5:11"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6287:5:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_bool",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6272:14:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6272:21:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6262:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6262:32:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "6255:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6255:40:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6252:60:11"
                                }
                            ]
                        },
                        "name": "validator_revert_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "6235:5:11",
                                "type": ""
                            }
                        ],
                        "src": "6202:116:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6373:84:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6383:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "6405:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6392:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6392:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6383:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "6445:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_bool",
                                            "nodeType": "YulIdentifier",
                                            "src": "6421:23:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6421:30:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6421:30:11"
                                }
                            ]
                        },
                        "name": "abi_decode_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "6351:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "6359:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "6367:5:11",
                                "type": ""
                            }
                        ],
                        "src": "6324:133:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6543:388:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6589:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6591:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6591:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6591:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6564:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6573:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6560:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6560:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6585:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6556:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6556:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6553:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "6682:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "6697:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6711:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "6701:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "6726:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6761:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6772:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6757:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6757:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6781:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6736:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6736:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6726:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "6809:115:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "6824:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6838:2:11",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "6828:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "6854:60:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6886:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6897:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6882:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6882:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6906:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_bool",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6864:17:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6864:50:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6854:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6505:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "6516:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6528:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "6536:6:11",
                                "type": ""
                            }
                        ],
                        "src": "6463:468:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7026:28:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7043:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7046:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "7036:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7036:12:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7036:12:11"
                                }
                            ]
                        },
                        "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6937:117:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7149:28:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7166:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7169:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "7159:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7159:12:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7159:12:11"
                                }
                            ]
                        },
                        "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7060:117:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7211:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7228:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7231:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7221:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7221:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7221:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7325:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7328:4:11",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7318:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7318:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7318:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7349:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7352:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "7342:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7342:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7342:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7183:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7412:238:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7422:58:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "7444:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7474:4:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "round_up_to_mul_of_32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7452:21:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7452:27:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7440:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7440:40:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "newFreePtr",
                                            "nodeType": "YulTypedName",
                                            "src": "7426:10:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "7591:22:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7593:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7593:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "7593:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7534:10:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7546:18:11",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7531:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7531:34:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7570:10:11"
                                                    },
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7582:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7567:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7567:22:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "7528:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7528:62:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "7525:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7629:2:11",
                                                "type": "",
                                                "value": "64"
                                            },
                                            {
                                                "name": "newFreePtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "7633:10:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7622:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7622:22:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7622:22:11"
                                }
                            ]
                        },
                        "name": "finalize_allocation",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "7398:6:11",
                                "type": ""
                            },
                            {
                                "name": "size",
                                "nodeType": "YulTypedName",
                                "src": "7406:4:11",
                                "type": ""
                            }
                        ],
                        "src": "7369:281:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7697:88:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7707:30:11",
                                    "value": {
                                        "arguments": [],
                                        "functionName": {
                                            "name": "allocate_unbounded",
                                            "nodeType": "YulIdentifier",
                                            "src": "7717:18:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7717:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7707:6:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "7766:6:11"
                                            },
                                            {
                                                "name": "size",
                                                "nodeType": "YulIdentifier",
                                                "src": "7774:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "finalize_allocation",
                                            "nodeType": "YulIdentifier",
                                            "src": "7746:19:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7746:33:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7746:33:11"
                                }
                            ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "size",
                                "nodeType": "YulTypedName",
                                "src": "7681:4:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "7690:6:11",
                                "type": ""
                            }
                        ],
                        "src": "7656:129:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7857:241:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "7962:22:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7964:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7964:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "7964:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7934:6:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7942:18:11",
                                                "type": "",
                                                "value": "0xffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "7931:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7931:30:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "7928:56:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7994:37:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8024:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "round_up_to_mul_of_32",
                                            "nodeType": "YulIdentifier",
                                            "src": "8002:21:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8002:29:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "7994:4:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8068:23:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "size",
                                                "nodeType": "YulIdentifier",
                                                "src": "8080:4:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8086:4:11",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8076:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8076:15:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "8068:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_allocation_size_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "7841:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "size",
                                "nodeType": "YulTypedName",
                                "src": "7852:4:11",
                                "type": ""
                            }
                        ],
                        "src": "7791:307:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8168:82:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "dst",
                                                "nodeType": "YulIdentifier",
                                                "src": "8191:3:11"
                                            },
                                            {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "8196:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8201:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "8178:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8178:30:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8178:30:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8228:3:11"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8233:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8224:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8224:16:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8242:1:11",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8217:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8217:27:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8217:27:11"
                                }
                            ]
                        },
                        "name": "copy_calldata_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "8150:3:11",
                                "type": ""
                            },
                            {
                                "name": "dst",
                                "nodeType": "YulTypedName",
                                "src": "8155:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "8160:6:11",
                                "type": ""
                            }
                        ],
                        "src": "8104:146:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8339:340:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8349:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8415:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "array_allocation_size_t_bytes_memory_ptr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8374:40:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8374:48:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "allocate_memory",
                                            "nodeType": "YulIdentifier",
                                            "src": "8358:15:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8358:65:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "8349:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "array",
                                                "nodeType": "YulIdentifier",
                                                "src": "8439:5:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8446:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8432:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8432:21:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8432:21:11"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8462:27:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "array",
                                                "nodeType": "YulIdentifier",
                                                "src": "8477:5:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8484:4:11",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8473:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8473:16:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "dst",
                                            "nodeType": "YulTypedName",
                                            "src": "8466:3:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "8527:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8529:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "8529:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8529:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8508:3:11"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8513:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8504:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8504:16:11"
                                            },
                                            {
                                                "name": "end",
                                                "nodeType": "YulIdentifier",
                                                "src": "8522:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "8501:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8501:25:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "8498:112:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "8656:3:11"
                                            },
                                            {
                                                "name": "dst",
                                                "nodeType": "YulIdentifier",
                                                "src": "8661:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8666:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_calldata_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "8619:36:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8619:54:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8619:54:11"
                                }
                            ]
                        },
                        "name": "abi_decode_available_length_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "8312:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "8317:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "8325:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "8333:5:11",
                                "type": ""
                            }
                        ],
                        "src": "8256:423:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8759:277:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "8808:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8810:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "8810:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8810:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8787:6:11"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "8795:4:11",
                                                                "type": "",
                                                                "value": "0x1f"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "8783:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "8783:17:11"
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8802:3:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "slt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8779:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8779:27:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "8772:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8772:35:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "8769:122:11"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8900:34:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "8927:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8914:12:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8914:20:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "8904:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8943:87:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9003:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9011:4:11",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8999:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8999:17:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "9018:6:11"
                                            },
                                            {
                                                "name": "end",
                                                "nodeType": "YulIdentifier",
                                                "src": "9026:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_decode_available_length_t_bytes_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "8952:46:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8952:78:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "8943:5:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "8737:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "8745:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "8753:5:11",
                                "type": ""
                            }
                        ],
                        "src": "8698:338:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9168:817:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "9215:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9217:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9217:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "9217:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9189:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9198:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9185:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9185:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9210:3:11",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "9181:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9181:33:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9178:120:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "9308:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "9323:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9337:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "9327:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "9352:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9387:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9398:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9383:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9383:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9407:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9362:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9362:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9352:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "9435:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "9450:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9464:2:11",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "9454:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "9480:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9515:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9526:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9511:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9511:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9535:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9490:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9490:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9480:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "9563:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "9578:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9592:2:11",
                                                "type": "",
                                                "value": "64"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "9582:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "9608:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9643:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9654:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9639:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9639:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9663:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9618:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9618:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9608:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "9691:287:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "9706:46:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9737:9:11"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9748:2:11",
                                                                "type": "",
                                                                "value": "96"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9733:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9733:18:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "calldataload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9720:12:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9720:32:11"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "9710:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "9799:83:11",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [],
                                                            "functionName": {
                                                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9801:77:11"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "9801:79:11"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "9801:79:11"
                                                    }
                                                ]
                                            },
                                            "condition": {
                                                "arguments": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9771:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9779:18:11",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9768:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9768:30:11"
                                            },
                                            "nodeType": "YulIf",
                                            "src": "9765:117:11"
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "9896:72:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9940:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9951:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9936:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9936:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9960:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_bytes_memory_ptr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9906:29:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9906:62:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9896:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9114:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "9125:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9137:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "9145:6:11",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "9153:6:11",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "9161:6:11",
                                "type": ""
                            }
                        ],
                        "src": "9042:943:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10074:391:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10120:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10122:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10122:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10122:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10095:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10104:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10091:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10091:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10116:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "10087:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10087:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10084:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "10213:117:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "10228:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10242:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "10232:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "10257:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10292:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10303:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10288:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10288:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10312:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10267:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10267:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10257:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "10340:118:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "10355:16:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10369:2:11",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "10359:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "10385:63:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10420:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10431:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10416:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10416:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10440:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10395:20:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10395:53:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10385:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "10036:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "10047:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "10059:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "10067:6:11",
                                "type": ""
                            }
                        ],
                        "src": "9991:474:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10499:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10516:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10519:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10509:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10509:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10509:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10613:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10616:4:11",
                                                "type": "",
                                                "value": "0x22"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10606:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10606:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10606:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10637:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10640:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "10630:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10630:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10630:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x22",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10471:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10708:269:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10718:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "10732:4:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10738:1:11",
                                                "type": "",
                                                "value": "2"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "10728:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10728:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "10718:6:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10749:38:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "10779:4:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10785:1:11",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10775:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10775:12:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "10753:18:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10826:51:11",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "10840:27:11",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10854:6:11"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10862:4:11",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10850:3:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10850:17:11"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10840:6:11"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "10806:18:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "10799:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10799:26:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10796:81:11"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10929:42:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x22",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10943:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10943:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10943:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "10893:18:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10916:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10924:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10913:2:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10913:14:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "10890:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10890:38:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10887:84:11"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "10692:4:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "10701:6:11",
                                "type": ""
                            }
                        ],
                        "src": "10657:320:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11089:114:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11111:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11119:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11107:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11107:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "11123:34:11",
                                                "type": "",
                                                "value": "ERC721: approval to current owne"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11100:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11100:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11100:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11179:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11187:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11175:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11175:15:11"
                                            },
                                            {
                                                "hexValue": "72",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "11192:3:11",
                                                "type": "",
                                                "value": "r"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11168:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11168:28:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11168:28:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "11081:6:11",
                                "type": ""
                            }
                        ],
                        "src": "10983:220:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11355:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11365:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11431:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11436:2:11",
                                                "type": "",
                                                "value": "33"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "11372:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11372:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "11365:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11537:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                                            "nodeType": "YulIdentifier",
                                            "src": "11448:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11448:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11448:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11550:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11561:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11566:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11557:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11557:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "11550:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "11343:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "11351:3:11",
                                "type": ""
                            }
                        ],
                        "src": "11209:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11752:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11762:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11774:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11785:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11770:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11770:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11762:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11809:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11820:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11805:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11805:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11828:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11834:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11824:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11824:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11798:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11798:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11798:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11854:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "11988:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "11862:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11862:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11854:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11732:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "11747:4:11",
                                "type": ""
                            }
                        ],
                        "src": "11581:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12112:142:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12134:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12142:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12130:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12130:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "12146:34:11",
                                                "type": "",
                                                "value": "ERC721: approve caller is not to"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12123:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12123:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12123:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12202:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12210:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12198:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12198:15:11"
                                            },
                                            {
                                                "hexValue": "6b656e206f776e6572206f7220617070726f76656420666f7220616c6c",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "12215:31:11",
                                                "type": "",
                                                "value": "ken owner or approved for all"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12191:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12191:56:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12191:56:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "12104:6:11",
                                "type": ""
                            }
                        ],
                        "src": "12006:248:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12406:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12416:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12482:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12487:2:11",
                                                "type": "",
                                                "value": "61"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "12423:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12423:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "12416:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12588:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
                                            "nodeType": "YulIdentifier",
                                            "src": "12499:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12499:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12499:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12601:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12612:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12617:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12608:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12608:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "12601:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "12394:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "12402:3:11",
                                "type": ""
                            }
                        ],
                        "src": "12260:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12803:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12813:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "12825:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12836:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12821:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12821:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "12813:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12860:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12871:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12856:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12856:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12879:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12885:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12875:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12875:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12849:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12849:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12849:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12905:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "13039:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "12913:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12913:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "12905:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "12783:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "12798:4:11",
                                "type": ""
                            }
                        ],
                        "src": "12632:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13163:126:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13185:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13193:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13181:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13181:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "13197:34:11",
                                                "type": "",
                                                "value": "ERC721: caller is not token owne"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13174:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13174:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13174:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13253:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13261:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13249:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13249:15:11"
                                            },
                                            {
                                                "hexValue": "72206f7220617070726f766564",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "13266:15:11",
                                                "type": "",
                                                "value": "r or approved"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13242:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13242:40:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13242:40:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "13155:6:11",
                                "type": ""
                            }
                        ],
                        "src": "13057:232:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13441:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13451:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13517:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13522:2:11",
                                                "type": "",
                                                "value": "45"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "13458:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13458:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "13451:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13623:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                                            "nodeType": "YulIdentifier",
                                            "src": "13534:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13534:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13534:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13636:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13647:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13652:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13643:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13643:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "13636:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "13429:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "13437:3:11",
                                "type": ""
                            }
                        ],
                        "src": "13295:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13838:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13848:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13860:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13871:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13856:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13856:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13848:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13895:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13906:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13891:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13891:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13914:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13920:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13910:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13910:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13884:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13884:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13884:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13940:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "14074:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "13948:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13948:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13940:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13818:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13833:4:11",
                                "type": ""
                            }
                        ],
                        "src": "13667:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14198:68:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14220:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14228:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14216:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14216:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "14232:26:11",
                                                "type": "",
                                                "value": "ERC721: invalid token ID"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14209:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14209:50:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14209:50:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "14190:6:11",
                                "type": ""
                            }
                        ],
                        "src": "14092:174:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14418:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14428:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14494:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14499:2:11",
                                                "type": "",
                                                "value": "24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "14435:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14435:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "14428:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14600:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                                            "nodeType": "YulIdentifier",
                                            "src": "14511:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14511:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14511:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14613:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14624:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14629:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14620:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14620:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "14613:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "14406:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "14414:3:11",
                                "type": ""
                            }
                        ],
                        "src": "14272:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14815:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14825:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14837:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14848:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14833:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14833:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "14825:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14872:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14883:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14868:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14868:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14891:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14897:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14887:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14887:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14861:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14861:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14861:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14917:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "15051:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "14925:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14925:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "14917:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "14795:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "14810:4:11",
                                "type": ""
                            }
                        ],
                        "src": "14644:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "15175:122:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15197:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15205:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15193:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15193:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "15209:34:11",
                                                "type": "",
                                                "value": "ERC721: address zero is not a va"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15186:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15186:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15186:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15265:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15273:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15261:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15261:15:11"
                                            },
                                            {
                                                "hexValue": "6c6964206f776e6572",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "15278:11:11",
                                                "type": "",
                                                "value": "lid owner"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15254:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15254:36:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15254:36:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "15167:6:11",
                                "type": ""
                            }
                        ],
                        "src": "15069:228:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "15449:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15459:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "15525:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15530:2:11",
                                                "type": "",
                                                "value": "41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "15466:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15466:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "15459:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "15631:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                                            "nodeType": "YulIdentifier",
                                            "src": "15542:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15542:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15542:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15644:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "15655:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15660:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15651:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15651:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "15644:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "15437:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "15445:3:11",
                                "type": ""
                            }
                        ],
                        "src": "15303:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "15846:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15856:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "15868:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15879:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15864:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15864:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "15856:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15903:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15914:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15899:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15899:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15922:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15928:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15918:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15918:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15892:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15892:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15892:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15948:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "16082:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "15956:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15956:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "15948:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "15826:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "15841:4:11",
                                "type": ""
                            }
                        ],
                        "src": "15675:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "16214:34:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "16224:18:11",
                                    "value": {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16239:3:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "updated_pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16224:11:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "16186:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "16191:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "updated_pos",
                                "nodeType": "YulTypedName",
                                "src": "16202:11:11",
                                "type": ""
                            }
                        ],
                        "src": "16100:148:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "16364:280:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "16374:53:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "16421:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_string_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "16388:32:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16388:39:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "16378:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "16436:96:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "16520:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16525:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "16443:76:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16443:89:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16436:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "16580:5:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "16587:4:11",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "16576:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "16576:16:11"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "16594:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16599:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "16541:34:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16541:65:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16541:65:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "16615:23:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "16626:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16631:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "16622:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16622:16:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "16615:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "16345:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "16352:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "16360:3:11",
                                "type": ""
                            }
                        ],
                        "src": "16254:390:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "16834:251:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "16845:102:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "16934:6:11"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "16943:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "16852:81:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16852:95:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16845:3:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "16957:102:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "17046:6:11"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "17055:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "16964:81:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16964:95:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16957:3:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "17069:10:11",
                                    "value": {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "17076:3:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "17069:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "16805:3:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "16811:6:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "16819:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "16830:3:11",
                                "type": ""
                            }
                        ],
                        "src": "16650:435:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "17197:118:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17219:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "17227:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17215:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17215:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "17231:34:11",
                                                "type": "",
                                                "value": "ERC721: transfer from incorrect "
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "17208:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17208:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17208:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17287:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "17295:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17283:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17283:15:11"
                                            },
                                            {
                                                "hexValue": "6f776e6572",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "17300:7:11",
                                                "type": "",
                                                "value": "owner"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "17276:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17276:32:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17276:32:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "17189:6:11",
                                "type": ""
                            }
                        ],
                        "src": "17091:224:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "17467:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "17477:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "17543:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17548:2:11",
                                                "type": "",
                                                "value": "37"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "17484:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17484:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "17477:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "17649:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                                            "nodeType": "YulIdentifier",
                                            "src": "17560:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17560:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17560:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "17662:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "17673:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17678:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "17669:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17669:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "17662:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "17455:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "17463:3:11",
                                "type": ""
                            }
                        ],
                        "src": "17321:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "17864:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "17874:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "17886:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17897:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "17882:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17882:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "17874:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17921:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "17932:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17917:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17917:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17940:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17946:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17936:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17936:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "17910:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17910:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17910:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "17966:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "18100:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "17974:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17974:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "17966:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "17844:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "17859:4:11",
                                "type": ""
                            }
                        ],
                        "src": "17693:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "18224:117:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18246:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "18254:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18242:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18242:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "18258:34:11",
                                                "type": "",
                                                "value": "ERC721: transfer to the zero add"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18235:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18235:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18235:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18314:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "18322:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18310:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18310:15:11"
                                            },
                                            {
                                                "hexValue": "72657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "18327:6:11",
                                                "type": "",
                                                "value": "ress"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18303:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18303:31:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18303:31:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "18216:6:11",
                                "type": ""
                            }
                        ],
                        "src": "18118:223:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "18493:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "18503:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "18569:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "18574:2:11",
                                                "type": "",
                                                "value": "36"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "18510:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18510:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "18503:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "18675:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                                            "nodeType": "YulIdentifier",
                                            "src": "18586:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18586:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18586:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "18688:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "18699:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "18704:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18695:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18695:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "18688:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "18481:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "18489:3:11",
                                "type": ""
                            }
                        ],
                        "src": "18347:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "18890:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "18900:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "18912:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "18923:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18908:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18908:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "18900:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18947:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "18958:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18943:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18943:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18966:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18972:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18962:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "18962:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18936:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18936:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18936:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "18992:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "19126:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "19000:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19000:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "18992:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "18870:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "18885:4:11",
                                "type": ""
                            }
                        ],
                        "src": "18719:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "19250:76:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19272:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "19280:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19268:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19268:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "19284:34:11",
                                                "type": "",
                                                "value": "ERC721: mint to the zero address"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "19261:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19261:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19261:58:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "19242:6:11",
                                "type": ""
                            }
                        ],
                        "src": "19144:182:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "19478:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "19488:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "19554:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19559:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "19495:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19495:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "19488:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "19660:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                                            "nodeType": "YulIdentifier",
                                            "src": "19571:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19571:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19571:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "19673:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "19684:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19689:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "19680:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19680:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "19673:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "19466:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "19474:3:11",
                                "type": ""
                            }
                        ],
                        "src": "19332:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "19875:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "19885:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "19897:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19908:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "19893:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19893:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "19885:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19932:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "19943:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19928:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19928:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19951:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19957:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19947:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19947:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "19921:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19921:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19921:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "19977:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "20111:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "19985:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19985:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "19977:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "19855:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "19870:4:11",
                                "type": ""
                            }
                        ],
                        "src": "19704:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "20235:72:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20257:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "20265:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20253:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20253:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "20269:30:11",
                                                "type": "",
                                                "value": "ERC721: token already minted"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "20246:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20246:54:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20246:54:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "20227:6:11",
                                "type": ""
                            }
                        ],
                        "src": "20129:178:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "20459:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "20469:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "20535:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "20540:2:11",
                                                "type": "",
                                                "value": "28"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "20476:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20476:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "20469:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "20641:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                                            "nodeType": "YulIdentifier",
                                            "src": "20552:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20552:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20552:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "20654:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "20665:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "20670:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20661:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20661:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "20654:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "20447:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "20455:3:11",
                                "type": ""
                            }
                        ],
                        "src": "20313:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "20856:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "20866:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "20878:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "20889:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "20874:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20874:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "20866:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20913:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "20924:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20909:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20909:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20932:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "20938:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20928:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20928:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "20902:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20902:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20902:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "20958:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "21092:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "20966:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20966:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "20958:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "20836:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "20851:4:11",
                                "type": ""
                            }
                        ],
                        "src": "20685:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "21216:69:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "21238:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21246:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "21234:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "21234:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "21250:27:11",
                                                "type": "",
                                                "value": "ERC721: approve to caller"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "21227:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21227:51:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21227:51:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "21208:6:11",
                                "type": ""
                            }
                        ],
                        "src": "21110:175:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "21437:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "21447:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "21513:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21518:2:11",
                                                "type": "",
                                                "value": "25"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "21454:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21454:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "21447:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "21619:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                                            "nodeType": "YulIdentifier",
                                            "src": "21530:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21530:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21530:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "21632:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "21643:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21648:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "21639:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21639:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "21632:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "21425:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "21433:3:11",
                                "type": ""
                            }
                        ],
                        "src": "21291:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "21834:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "21844:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "21856:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21867:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "21852:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21852:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "21844:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "21891:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21902:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "21887:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "21887:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "21910:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "21916:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "21906:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "21906:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "21880:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21880:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21880:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "21936:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "22070:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "21944:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21944:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "21936:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "21814:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "21829:4:11",
                                "type": ""
                            }
                        ],
                        "src": "21663:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "22194:131:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22216:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "22224:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22212:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22212:14:11"
                                            },
                                            {
                                                "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "22228:34:11",
                                                "type": "",
                                                "value": "ERC721: transfer to non ERC721Re"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "22205:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22205:58:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22205:58:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22284:6:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "22292:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22280:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22280:15:11"
                                            },
                                            {
                                                "hexValue": "63656976657220696d706c656d656e746572",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "22297:20:11",
                                                "type": "",
                                                "value": "ceiver implementer"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "22273:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22273:45:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22273:45:11"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "22186:6:11",
                                "type": ""
                            }
                        ],
                        "src": "22088:237:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "22477:220:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "22487:74:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "22553:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "22558:2:11",
                                                "type": "",
                                                "value": "50"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "22494:58:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22494:67:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "22487:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "22659:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                            "nodeType": "YulIdentifier",
                                            "src": "22570:88:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22570:93:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22570:93:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "22672:19:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "22683:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "22688:2:11",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22679:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22679:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "22672:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "22465:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "22473:3:11",
                                "type": ""
                            }
                        ],
                        "src": "22331:366:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "22874:248:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "22884:26:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "22896:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "22907:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22892:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22892:18:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "22884:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22931:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "22942:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22927:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22927:17:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22950:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22956:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22946:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22946:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "22920:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22920:47:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22920:47:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "22976:139:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "23110:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "22984:124:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22984:131:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "22976:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "22854:9:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "22869:4:11",
                                "type": ""
                            }
                        ],
                        "src": "22703:419:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "23156:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23173:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23176:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "23166:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23166:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23166:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23270:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23273:4:11",
                                                "type": "",
                                                "value": "0x12"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "23263:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23263:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23263:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23294:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23297:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "23287:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23287:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23287:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "23128:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "23342:152:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23359:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23362:77:11",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "23352:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23352:88:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23352:88:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23456:1:11",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23459:4:11",
                                                "type": "",
                                                "value": "0x11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "23449:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23449:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23449:15:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23480:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "23483:4:11",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "23473:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23473:15:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23473:15:11"
                                }
                            ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "23314:180:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "23545:149:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23555:25:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23578:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "23560:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23560:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "23555:1:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23589:25:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "23612:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "23594:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23594:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "23589:1:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23623:17:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23635:1:11"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "23638:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "23631:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23631:9:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "23623:4:11"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "23665:22:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "23667:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "23667:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "23667:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "diff",
                                                "nodeType": "YulIdentifier",
                                                "src": "23656:4:11"
                                            },
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23662:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "23653:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23653:11:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23650:37:11"
                                }
                            ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "23531:1:11",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "23534:1:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "diff",
                                "nodeType": "YulTypedName",
                                "src": "23540:4:11",
                                "type": ""
                            }
                        ],
                        "src": "23500:194:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "23744:147:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23754:25:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23777:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "23759:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23759:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "23754:1:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23788:25:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "23811:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "23793:17:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23793:20:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "23788:1:11"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23822:16:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23833:1:11"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "23836:1:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23829:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23829:9:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "sum",
                                            "nodeType": "YulIdentifier",
                                            "src": "23822:3:11"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "23862:22:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "23864:16:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "23864:18:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "23864:18:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "23854:1:11"
                                            },
                                            {
                                                "name": "sum",
                                                "nodeType": "YulIdentifier",
                                                "src": "23857:3:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "23851:2:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23851:10:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23848:36:11"
                                }
                            ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "23731:1:11",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "23734:1:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "sum",
                                "nodeType": "YulTypedName",
                                "src": "23740:3:11",
                                "type": ""
                            }
                        ],
                        "src": "23700:191:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "23955:40:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "23966:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "23982:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23976:5:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23976:12:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "23966:6:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_length_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "23938:5:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "23948:6:11",
                                "type": ""
                            }
                        ],
                        "src": "23897:98:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "24096:73:11",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "24113:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "24118:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "24106:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24106:19:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24106:19:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "24134:29:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "24153:3:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "24158:4:11",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24149:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24149:14:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "updated_pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "24134:11:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "24068:3:11",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "24073:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "updated_pos",
                                "nodeType": "YulTypedName",
                                "src": "24084:11:11",
                                "type": ""
                            }
                        ],
                        "src": "24001:168:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "24265:283:11",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24275:52:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "24321:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_bytes_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "24289:31:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24289:38:11"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "24279:6:11",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "24336:77:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "24401:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "24406:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "24343:57:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24343:70:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "24336:3:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24461:5:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "24468:4:11",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24457:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24457:16:11"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "24475:3:11"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "24480:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "24422:34:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24422:65:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24422:65:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "24496:46:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "24507:3:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24534:6:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "round_up_to_mul_of_32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24512:21:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24512:29:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24503:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24503:39:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "24496:3:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "24246:5:11",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "24253:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "24261:3:11",
                                "type": ""
                            }
                        ],
                        "src": "24175:373:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "24754:440:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "24764:27:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "24776:9:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "24787:3:11",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24772:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24772:19:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "24764:4:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "24845:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24858:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "24869:1:11",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24854:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24854:17:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_address_to_t_address_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "24801:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24801:71:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24801:71:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "24926:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24939:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "24950:2:11",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24935:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24935:18:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_address_to_t_address_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "24882:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24882:72:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24882:72:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "25008:6:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25021:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "25032:2:11",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25017:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25017:18:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "24964:43:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24964:72:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24964:72:11"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25057:9:11"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "25068:2:11",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25053:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25053:18:11"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25077:4:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25083:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25073:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25073:20:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "25046:6:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25046:48:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25046:48:11"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "25103:84:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value3",
                                                "nodeType": "YulIdentifier",
                                                "src": "25173:6:11"
                                            },
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "25182:4:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "25111:61:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25111:76:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "25103:4:11"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "24702:9:11",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "24714:6:11",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "24722:6:11",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "24730:6:11",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "24738:6:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "24749:4:11",
                                "type": ""
                            }
                        ],
                        "src": "24554:640:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "25262:79:11",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "25272:22:11",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "25287:6:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "25281:5:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25281:13:11"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "25272:5:11"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "25329:5:11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_bytes4",
                                            "nodeType": "YulIdentifier",
                                            "src": "25303:25:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25303:32:11"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25303:32:11"
                                }
                            ]
                        },
                        "name": "abi_decode_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "25240:6:11",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "25248:3:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "25256:5:11",
                                "type": ""
                            }
                        ],
                        "src": "25200:141:11"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "25423:273:11",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "25469:83:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25471:77:11"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "25471:79:11"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "25471:79:11"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25444:7:11"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25453:9:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25440:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25440:23:11"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "25465:2:11",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "25436:3:11"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25436:32:11"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "25433:119:11"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "25562:127:11",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "25577:15:11",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "25591:1:11",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "25581:6:11",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "25606:73:11",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25651:9:11"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25662:6:11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "25647:3:11"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "25647:22:11"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25671:7:11"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_bytes4_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25616:30:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25616:63:11"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25606:6:11"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "25393:9:11",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "25404:7:11",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "25416:6:11",
                                "type": ""
                            }
                        ],
                        "src": "25347:349:11"
                    }
                ]
            },
            "contents": "{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_bytes4(value) -> cleaned {\n        cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n    }\n\n    function validator_revert_t_bytes4(value) {\n        if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bytes4(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_bytes4(value)\n    }\n\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\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        mstore(add(dst, length), 0)\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function validator_revert_t_bool(value) {\n        if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bool(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 0)\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function finalize_allocation(memPtr, size) {\n        let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n\n    function allocate_memory(size) -> memPtr {\n        memPtr := allocate_unbounded()\n        finalize_allocation(memPtr, size)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := round_up_to_mul_of_32(length)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n        calldatacopy(dst, src, length)\n        mstore(add(dst, length), 0)\n    }\n\n    function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n        copy_calldata_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := calldataload(offset)\n        array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n        if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 96))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n        mstore(add(memPtr, 32), \"r\")\n\n    }\n\n    function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n        store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n        mstore(add(memPtr, 32), \"ken owner or approved for all\")\n\n    }\n\n    function abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 61)\n        store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n        mstore(add(memPtr, 32), \"r or approved\")\n\n    }\n\n    function abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n    }\n\n    function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n        store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n        mstore(add(memPtr, 32), \"lid owner\")\n\n    }\n\n    function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n        store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n        pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1,  pos)\n\n        end := pos\n    }\n\n    function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n        mstore(add(memPtr, 32), \"owner\")\n\n    }\n\n    function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n        store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n        mstore(add(memPtr, 32), \"ress\")\n\n    }\n\n    function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n        store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: mint to the zero address\")\n\n    }\n\n    function abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n        store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: token already minted\")\n\n    }\n\n    function abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n        store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n    }\n\n    function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n        store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n        mstore(add(memPtr, 32), \"ceiver implementer\")\n\n    }\n\n    function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n        store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function panic_error_0x12() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function checked_sub_t_uint256(x, y) -> diff {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        diff := sub(x, y)\n\n        if gt(diff, x) { panic_error_0x11() }\n\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        sum := add(x, y)\n\n        if gt(x, sum) { panic_error_0x11() }\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 128)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value2,  add(headStart, 64))\n\n        mstore(add(headStart, 96), sub(tail, headStart))\n        tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3,  tail)\n\n    }\n\n    function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_bytes4(value)\n    }\n\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n}\n",
            "id": 11,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "sourceMap": "132:265:0:-:0;;;169:60;;;;;;;;;;1390:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1464:5;1456;:13;;;;;;:::i;:::-;;1489:7;1479;:17;;;;;;:::i;:::-;;1390:113;;132:265:0;;7:99:11;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;132:265:0:-;;;;;;;",
    "deployedSourceMap": "132:265:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3935:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3468:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4612:326;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;235:85:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5004:179:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;326:69:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2190:219:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2633:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4169:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5249:314;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2801:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4388:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1570:300;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;4071:15;:24;4087:7;4071:24;;;;;;;;;;;;;;;;;;;;;4064:31;;3935:167;;;:::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;3605:11;;:2;:11;;;3597:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3702:5;3686:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3711:37;3728:5;3735:12;:10;:12::i;:::-;3711:16;:37::i;:::-;3686:62;3665:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:326::-;4801:41;4820:12;:10;:12::i;:::-;4834:7;4801:18;:41::i;:::-;4793:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;4903:28;4913:4;4919:2;4923:7;4903:9;:28::i;:::-;4612:326;;;:::o;235:85:0:-;295:18;301:2;305:7;295:5;:18::i;:::-;235:85;;:::o;5004:179:1:-;5137:39;5154:4;5160:2;5164:7;5137:39;;;;;;;;;;;;:16;:39::i;:::-;5004:179;;;:::o;326:69:0:-;374:14;380:7;374:5;:14::i;:::-;326:69;:::o;2190:219:1:-;2262:7;2281:13;2297:17;2306:7;2297:8;:17::i;:::-;2281:33;;2349:1;2332:19;;:5;:19;;;2324:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2397:5;2390:12;;;2190:219;;;:::o;1929:204::-;2001:7;2045:1;2028:19;;:5;:19;;;2020:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2110:9;:16;2120:5;2110:16;;;;;;;;;;;;;;;;2103:23;;1929:204;;;:::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2633:102;:::o;4169:153::-;4263:52;4282:12;:10;:12::i;:::-;4296:8;4306;4263:18;:52::i;:::-;4169:153;;:::o;5249:314::-;5417:41;5436:12;:10;:12::i;:::-;5450:7;5417:18;:41::i;:::-;5409:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;5518:38;5532:4;5538:2;5542:7;5551:4;5518:13;:38::i;:::-;5249:314;;;;:::o;2801:276::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;:8;:10::i;:::-;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;;;2801:276;;;:::o;4388:162::-;4485:4;4508:18;:25;4527:5;4508:25;;;;;;;;;;;;;;;:35;4534:8;4508:35;;;;;;;;;;;;;;;;;;;;;;;;;4501:42;;4388:162;;;;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;13466:133:1:-;13547:16;13555:7;13547;:16::i;:::-;13539:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13466:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;12768:171:1:-;12869:2;12842:15;:24;12858:7;12842:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12924:7;12920:2;12886:46;;12895:23;12910:7;12895:14;:23::i;:::-;12886:46;;;;;;;;;;;;12768:171;;:::o;7540:261::-;7633:4;7649:13;7665:23;7680:7;7665:14;:23::i;:::-;7649:39;;7717:5;7706:16;;:7;:16;;;:52;;;;7726:32;7743:5;7750:7;7726:16;:32::i;:::-;7706:52;:87;;;;7786:7;7762:31;;:20;7774:7;7762:11;:20::i;:::-;:31;;;7706:87;7698:96;;;7540:261;;;;:::o;11423:1233::-;11577:4;11550:31;;:23;11565:7;11550:14;:23::i;:::-;:31;;;11542:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11655:1;11641:16;;:2;:16;;;11633:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11709:42;11730:4;11736:2;11740:7;11749:1;11709:20;:42::i;:::-;11878:4;11851:31;;:23;11866:7;11851:14;:23::i;:::-;:31;;;11843:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11993:15;:24;12009:7;11993:24;;;;;;;;;;;;11986:31;;;;;;;;;;;12480:1;12461:9;:15;12471:4;12461:15;;;;;;;;;;;;;;;;:20;;;;;;;;;;;12512:1;12495:9;:13;12505:2;12495:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;12552:2;12533:7;:16;12541:7;12533:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12589:7;12585:2;12570:27;;12579:4;12570:27;;;;;;;;;;;;12608:41;12628:4;12634:2;12638:7;12647:1;12608:19;:41::i;:::-;11423:1233;;;:::o;9091:920::-;9184:1;9170:16;;:2;:16;;;9162:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9242:16;9250:7;9242;:16::i;:::-;9241:17;9233:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9302:48;9331:1;9335:2;9339:7;9348:1;9302:20;:48::i;:::-;9446:16;9454:7;9446;:16::i;:::-;9445:17;9437:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9854:1;9837:9;:13;9847:2;9837:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;9895:2;9876:7;:16;9884:7;9876:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9938:7;9934:2;9913:33;;9930:1;9913:33;;;;;;;;;;;;9957:47;9985:1;9989:2;9993:7;10002:1;9957:19;:47::i;:::-;9091:920;;:::o;10337:762::-;10396:13;10412:23;10427:7;10412:14;:23::i;:::-;10396:39;;10446:51;10467:5;10482:1;10486:7;10495:1;10446:20;:51::i;:::-;10607:23;10622:7;10607:14;:23::i;:::-;10599:31;;10675:15;:24;10691:7;10675:24;;;;;;;;;;;;10668:31;;;;;;;;;;;10935:1;10915:9;:16;10925:5;10915:16;;;;;;;;;;;;;;;;:21;;;;;;;;;;;10963:7;:16;10971:7;10963:16;;;;;;;;;;;;10956:23;;;;;;;;;;;11023:7;11019:1;10995:36;;11004:5;10995:36;;;;;;;;;;;;11042:50;11062:5;11077:1;11081:7;11090:1;11042:19;:50::i;:::-;10386:713;10337:762;:::o;6838:115::-;6904:7;6930;:16;6938:7;6930:16;;;;;;;;;;;;;;;;;;;;;6923:23;;6838:115;;;:::o;13075:307::-;13225:8;13216:17;;:5;:17;;;13208:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13311:8;13273:18;:25;13292:5;13273:25;;;;;;;;;;;;;;;:35;13299:8;13273:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13356:8;13334:41;;13349:5;13334:41;;;13366:8;13334:41;;;;;;:::i;:::-;;;;;;;;13075:307;;;:::o;6424:305::-;6574:28;6584:4;6590:2;6594:7;6574:9;:28::i;:::-;6620:47;6643:4;6649:2;6653:7;6662:4;6620:22;:47::i;:::-;6612:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6424:305;;;;:::o;3319:92::-;3370:13;3395:9;;;;;;;;;;;;;;3319:92;:::o;415:696:7:-;471:13;520:14;557:1;537:17;548:5;537:10;:17::i;:::-;:21;520:38;;572:20;606:6;595:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:41;;627:11;753:6;749:2;745:15;737:6;733:28;726:35;;788:280;795:4;788:280;;;819:5;;;;;;;;958:8;953:2;946:5;942:14;937:30;932:3;924:44;1012:2;1003:11;;;;;;:::i;:::-;;;;;1045:1;1036:5;:10;788:280;1032:21;788:280;1088:6;1081:13;;;;;415:696;;;:::o;7256:126:1:-;7321:4;7373:1;7344:31;;:17;7353:7;7344:8;:17::i;:::-;:31;;;;7337:38;;7256:126;;;:::o;15698:396::-;15882:1;15870:9;:13;15866:222;;;15919:1;15903:18;;:4;:18;;;15899:85;;15960:9;15941;:15;15951:4;15941:15;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15899:85;16015:1;16001:16;;:2;:16;;;15997:81;;16054:9;16037;:13;16047:2;16037:13;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;15997:81;15866:222;15698:396;;;;:::o;16800:153::-;;;;;:::o;14151:831::-;14300:4;14320:15;:2;:13;;;:15::i;:::-;14316:660;;;14371:2;14355:36;;;14392:12;:10;:12::i;:::-;14406:4;14412:7;14421:4;14355:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14351:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14610:1;14593:6;:13;:18;14589:321;;14635:60;;;;;;;;;;:::i;:::-;;;;;;;;14589:321;14862:6;14856:13;14847:6;14843:2;14839:15;14832:38;14351:573;14486:41;;;14476:51;;;:6;:51;;;;14469:58;;;;;14316:660;14961:4;14954:11;;14151:831;;;;;;;:::o;9889:890:10:-;9942:7;9961:14;9978:1;9961:18;;10026:6;10017:5;:15;10013:99;;10061:6;10052:15;;;;;;:::i;:::-;;;;;10095:2;10085:12;;;;10013:99;10138:6;10129:5;:15;10125:99;;10173:6;10164:15;;;;;;:::i;:::-;;;;;10207:2;10197:12;;;;10125:99;10250:6;10241:5;:15;10237:99;;10285:6;10276:15;;;;;;:::i;:::-;;;;;10319:2;10309:12;;;;10237:99;10362:5;10353;:14;10349:96;;10396:5;10387:14;;;;;;:::i;:::-;;;;;10429:1;10419:11;;;;10349:96;10471:5;10462;:14;10458:96;;10505:5;10496:14;;;;;;:::i;:::-;;;;;10538:1;10528:11;;;;10458:96;10580:5;10571;:14;10567:96;;10614:5;10605:14;;;;;;:::i;:::-;;;;;10647:1;10637:11;;;;10567:96;10689:5;10680;:14;10676:64;;10724:1;10714:11;;;;10676:64;10766:6;10759:13;;;9889:890;;;:::o;1175:320:5:-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;7:75:11:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:77::-;2897:7;2926:5;2915:16;;2860:77;;;:::o;2943:122::-;3016:24;3034:5;3016:24;:::i;:::-;3009:5;3006:35;2996:63;;3055:1;3052;3045:12;2996:63;2943:122;:::o;3071:139::-;3117:5;3155:6;3142:20;3133:29;;3171:33;3198:5;3171:33;:::i;:::-;3071:139;;;;:::o;3216:329::-;3275:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:119;;;3330:79;;:::i;:::-;3292:119;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3216:329;;;;:::o;3551:126::-;3588:7;3628:42;3621:5;3617:54;3606:65;;3551:126;;;:::o;3683:96::-;3720:7;3749:24;3767:5;3749:24;:::i;:::-;3738:35;;3683:96;;;:::o;3785:118::-;3872:24;3890:5;3872:24;:::i;:::-;3867:3;3860:37;3785:118;;:::o;3909:222::-;4002:4;4040:2;4029:9;4025:18;4017:26;;4053:71;4121:1;4110:9;4106:17;4097:6;4053:71;:::i;:::-;3909:222;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:474::-;4478:6;4486;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4788:2;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4759:118;4410:474;;;;;:::o;4890:619::-;4967:6;4975;4983;5032:2;5020:9;5011:7;5007:23;5003:32;5000:119;;;5038:79;;:::i;:::-;5000:119;5158:1;5183:53;5228:7;5219:6;5208:9;5204:22;5183:53;:::i;:::-;5173:63;;5129:117;5285:2;5311:53;5356:7;5347:6;5336:9;5332:22;5311:53;:::i;:::-;5301:63;;5256:118;5413:2;5439:53;5484:7;5475:6;5464:9;5460:22;5439:53;:::i;:::-;5429:63;;5384:118;4890:619;;;;;:::o;5515:329::-;5574:6;5623:2;5611:9;5602:7;5598:23;5594:32;5591:119;;;5629:79;;:::i;:::-;5591:119;5749:1;5774:53;5819:7;5810:6;5799:9;5795:22;5774:53;:::i;:::-;5764:63;;5720:117;5515:329;;;;:::o;5850:118::-;5937:24;5955:5;5937:24;:::i;:::-;5932:3;5925:37;5850:118;;:::o;5974:222::-;6067:4;6105:2;6094:9;6090:18;6082:26;;6118:71;6186:1;6175:9;6171:17;6162:6;6118:71;:::i;:::-;5974:222;;;;:::o;6202:116::-;6272:21;6287:5;6272:21;:::i;:::-;6265:5;6262:32;6252:60;;6308:1;6305;6298:12;6252:60;6202:116;:::o;6324:133::-;6367:5;6405:6;6392:20;6383:29;;6421:30;6445:5;6421:30;:::i;:::-;6324:133;;;;:::o;6463:468::-;6528:6;6536;6585:2;6573:9;6564:7;6560:23;6556:32;6553:119;;;6591:79;;:::i;:::-;6553:119;6711:1;6736:53;6781:7;6772:6;6761:9;6757:22;6736:53;:::i;:::-;6726:63;;6682:117;6838:2;6864:50;6906:7;6897:6;6886:9;6882:22;6864:50;:::i;:::-;6854:60;;6809:115;6463:468;;;;;:::o;6937:117::-;7046:1;7043;7036:12;7060:117;7169:1;7166;7159:12;7183:180;7231:77;7228:1;7221:88;7328:4;7325:1;7318:15;7352:4;7349:1;7342:15;7369:281;7452:27;7474:4;7452:27;:::i;:::-;7444:6;7440:40;7582:6;7570:10;7567:22;7546:18;7534:10;7531:34;7528:62;7525:88;;;7593:18;;:::i;:::-;7525:88;7633:10;7629:2;7622:22;7412:238;7369:281;;:::o;7656:129::-;7690:6;7717:20;;:::i;:::-;7707:30;;7746:33;7774:4;7766:6;7746:33;:::i;:::-;7656:129;;;:::o;7791:307::-;7852:4;7942:18;7934:6;7931:30;7928:56;;;7964:18;;:::i;:::-;7928:56;8002:29;8024:6;8002:29;:::i;:::-;7994:37;;8086:4;8080;8076:15;8068:23;;7791:307;;;:::o;8104:146::-;8201:6;8196:3;8191;8178:30;8242:1;8233:6;8228:3;8224:16;8217:27;8104:146;;;:::o;8256:423::-;8333:5;8358:65;8374:48;8415:6;8374:48;:::i;:::-;8358:65;:::i;:::-;8349:74;;8446:6;8439:5;8432:21;8484:4;8477:5;8473:16;8522:3;8513:6;8508:3;8504:16;8501:25;8498:112;;;8529:79;;:::i;:::-;8498:112;8619:54;8666:6;8661:3;8656;8619:54;:::i;:::-;8339:340;8256:423;;;;;:::o;8698:338::-;8753:5;8802:3;8795:4;8787:6;8783:17;8779:27;8769:122;;8810:79;;:::i;:::-;8769:122;8927:6;8914:20;8952:78;9026:3;9018:6;9011:4;9003:6;8999:17;8952:78;:::i;:::-;8943:87;;8759:277;8698:338;;;;:::o;9042:943::-;9137:6;9145;9153;9161;9210:3;9198:9;9189:7;9185:23;9181:33;9178:120;;;9217:79;;:::i;:::-;9178:120;9337:1;9362:53;9407:7;9398:6;9387:9;9383:22;9362:53;:::i;:::-;9352:63;;9308:117;9464:2;9490:53;9535:7;9526:6;9515:9;9511:22;9490:53;:::i;:::-;9480:63;;9435:118;9592:2;9618:53;9663:7;9654:6;9643:9;9639:22;9618:53;:::i;:::-;9608:63;;9563:118;9748:2;9737:9;9733:18;9720:32;9779:18;9771:6;9768:30;9765:117;;;9801:79;;:::i;:::-;9765:117;9906:62;9960:7;9951:6;9940:9;9936:22;9906:62;:::i;:::-;9896:72;;9691:287;9042:943;;;;;;;:::o;9991:474::-;10059:6;10067;10116:2;10104:9;10095:7;10091:23;10087:32;10084:119;;;10122:79;;:::i;:::-;10084:119;10242:1;10267:53;10312:7;10303:6;10292:9;10288:22;10267:53;:::i;:::-;10257:63;;10213:117;10369:2;10395:53;10440:7;10431:6;10420:9;10416:22;10395:53;:::i;:::-;10385:63;;10340:118;9991:474;;;;;:::o;10471:180::-;10519:77;10516:1;10509:88;10616:4;10613:1;10606:15;10640:4;10637:1;10630:15;10657:320;10701:6;10738:1;10732:4;10728:12;10718:22;;10785:1;10779:4;10775:12;10806:18;10796:81;;10862:4;10854:6;10850:17;10840:27;;10796:81;10924:2;10916:6;10913:14;10893:18;10890:38;10887:84;;10943:18;;:::i;:::-;10887:84;10708:269;10657:320;;;:::o;10983:220::-;11123:34;11119:1;11111:6;11107:14;11100:58;11192:3;11187:2;11179:6;11175:15;11168:28;10983:220;:::o;11209:366::-;11351:3;11372:67;11436:2;11431:3;11372:67;:::i;:::-;11365:74;;11448:93;11537:3;11448:93;:::i;:::-;11566:2;11561:3;11557:12;11550:19;;11209:366;;;:::o;11581:419::-;11747:4;11785:2;11774:9;11770:18;11762:26;;11834:9;11828:4;11824:20;11820:1;11809:9;11805:17;11798:47;11862:131;11988:4;11862:131;:::i;:::-;11854:139;;11581:419;;;:::o;12006:248::-;12146:34;12142:1;12134:6;12130:14;12123:58;12215:31;12210:2;12202:6;12198:15;12191:56;12006:248;:::o;12260:366::-;12402:3;12423:67;12487:2;12482:3;12423:67;:::i;:::-;12416:74;;12499:93;12588:3;12499:93;:::i;:::-;12617:2;12612:3;12608:12;12601:19;;12260:366;;;:::o;12632:419::-;12798:4;12836:2;12825:9;12821:18;12813:26;;12885:9;12879:4;12875:20;12871:1;12860:9;12856:17;12849:47;12913:131;13039:4;12913:131;:::i;:::-;12905:139;;12632:419;;;:::o;13057:232::-;13197:34;13193:1;13185:6;13181:14;13174:58;13266:15;13261:2;13253:6;13249:15;13242:40;13057:232;:::o;13295:366::-;13437:3;13458:67;13522:2;13517:3;13458:67;:::i;:::-;13451:74;;13534:93;13623:3;13534:93;:::i;:::-;13652:2;13647:3;13643:12;13636:19;;13295:366;;;:::o;13667:419::-;13833:4;13871:2;13860:9;13856:18;13848:26;;13920:9;13914:4;13910:20;13906:1;13895:9;13891:17;13884:47;13948:131;14074:4;13948:131;:::i;:::-;13940:139;;13667:419;;;:::o;14092:174::-;14232:26;14228:1;14220:6;14216:14;14209:50;14092:174;:::o;14272:366::-;14414:3;14435:67;14499:2;14494:3;14435:67;:::i;:::-;14428:74;;14511:93;14600:3;14511:93;:::i;:::-;14629:2;14624:3;14620:12;14613:19;;14272:366;;;:::o;14644:419::-;14810:4;14848:2;14837:9;14833:18;14825:26;;14897:9;14891:4;14887:20;14883:1;14872:9;14868:17;14861:47;14925:131;15051:4;14925:131;:::i;:::-;14917:139;;14644:419;;;:::o;15069:228::-;15209:34;15205:1;15197:6;15193:14;15186:58;15278:11;15273:2;15265:6;15261:15;15254:36;15069:228;:::o;15303:366::-;15445:3;15466:67;15530:2;15525:3;15466:67;:::i;:::-;15459:74;;15542:93;15631:3;15542:93;:::i;:::-;15660:2;15655:3;15651:12;15644:19;;15303:366;;;:::o;15675:419::-;15841:4;15879:2;15868:9;15864:18;15856:26;;15928:9;15922:4;15918:20;15914:1;15903:9;15899:17;15892:47;15956:131;16082:4;15956:131;:::i;:::-;15948:139;;15675:419;;;:::o;16100:148::-;16202:11;16239:3;16224:18;;16100:148;;;;:::o;16254:390::-;16360:3;16388:39;16421:5;16388:39;:::i;:::-;16443:89;16525:6;16520:3;16443:89;:::i;:::-;16436:96;;16541:65;16599:6;16594:3;16587:4;16580:5;16576:16;16541:65;:::i;:::-;16631:6;16626:3;16622:16;16615:23;;16364:280;16254:390;;;;:::o;16650:435::-;16830:3;16852:95;16943:3;16934:6;16852:95;:::i;:::-;16845:102;;16964:95;17055:3;17046:6;16964:95;:::i;:::-;16957:102;;17076:3;17069:10;;16650:435;;;;;:::o;17091:224::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:7;17295:2;17287:6;17283:15;17276:32;17091:224;:::o;17321:366::-;17463:3;17484:67;17548:2;17543:3;17484:67;:::i;:::-;17477:74;;17560:93;17649:3;17560:93;:::i;:::-;17678:2;17673:3;17669:12;17662:19;;17321:366;;;:::o;17693:419::-;17859:4;17897:2;17886:9;17882:18;17874:26;;17946:9;17940:4;17936:20;17932:1;17921:9;17917:17;17910:47;17974:131;18100:4;17974:131;:::i;:::-;17966:139;;17693:419;;;:::o;18118:223::-;18258:34;18254:1;18246:6;18242:14;18235:58;18327:6;18322:2;18314:6;18310:15;18303:31;18118:223;:::o;18347:366::-;18489:3;18510:67;18574:2;18569:3;18510:67;:::i;:::-;18503:74;;18586:93;18675:3;18586:93;:::i;:::-;18704:2;18699:3;18695:12;18688:19;;18347:366;;;:::o;18719:419::-;18885:4;18923:2;18912:9;18908:18;18900:26;;18972:9;18966:4;18962:20;18958:1;18947:9;18943:17;18936:47;19000:131;19126:4;19000:131;:::i;:::-;18992:139;;18719:419;;;:::o;19144:182::-;19284:34;19280:1;19272:6;19268:14;19261:58;19144:182;:::o;19332:366::-;19474:3;19495:67;19559:2;19554:3;19495:67;:::i;:::-;19488:74;;19571:93;19660:3;19571:93;:::i;:::-;19689:2;19684:3;19680:12;19673:19;;19332:366;;;:::o;19704:419::-;19870:4;19908:2;19897:9;19893:18;19885:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19985:131;20111:4;19985:131;:::i;:::-;19977:139;;19704:419;;;:::o;20129:178::-;20269:30;20265:1;20257:6;20253:14;20246:54;20129:178;:::o;20313:366::-;20455:3;20476:67;20540:2;20535:3;20476:67;:::i;:::-;20469:74;;20552:93;20641:3;20552:93;:::i;:::-;20670:2;20665:3;20661:12;20654:19;;20313:366;;;:::o;20685:419::-;20851:4;20889:2;20878:9;20874:18;20866:26;;20938:9;20932:4;20928:20;20924:1;20913:9;20909:17;20902:47;20966:131;21092:4;20966:131;:::i;:::-;20958:139;;20685:419;;;:::o;21110:175::-;21250:27;21246:1;21238:6;21234:14;21227:51;21110:175;:::o;21291:366::-;21433:3;21454:67;21518:2;21513:3;21454:67;:::i;:::-;21447:74;;21530:93;21619:3;21530:93;:::i;:::-;21648:2;21643:3;21639:12;21632:19;;21291:366;;;:::o;21663:419::-;21829:4;21867:2;21856:9;21852:18;21844:26;;21916:9;21910:4;21906:20;21902:1;21891:9;21887:17;21880:47;21944:131;22070:4;21944:131;:::i;:::-;21936:139;;21663:419;;;:::o;22088:237::-;22228:34;22224:1;22216:6;22212:14;22205:58;22297:20;22292:2;22284:6;22280:15;22273:45;22088:237;:::o;22331:366::-;22473:3;22494:67;22558:2;22553:3;22494:67;:::i;:::-;22487:74;;22570:93;22659:3;22570:93;:::i;:::-;22688:2;22683:3;22679:12;22672:19;;22331:366;;;:::o;22703:419::-;22869:4;22907:2;22896:9;22892:18;22884:26;;22956:9;22950:4;22946:20;22942:1;22931:9;22927:17;22920:47;22984:131;23110:4;22984:131;:::i;:::-;22976:139;;22703:419;;;:::o;23128:180::-;23176:77;23173:1;23166:88;23273:4;23270:1;23263:15;23297:4;23294:1;23287:15;23314:180;23362:77;23359:1;23352:88;23459:4;23456:1;23449:15;23483:4;23480:1;23473:15;23500:194;23540:4;23560:20;23578:1;23560:20;:::i;:::-;23555:25;;23594:20;23612:1;23594:20;:::i;:::-;23589:25;;23638:1;23635;23631:9;23623:17;;23662:1;23656:4;23653:11;23650:37;;;23667:18;;:::i;:::-;23650:37;23500:194;;;;:::o;23700:191::-;23740:3;23759:20;23777:1;23759:20;:::i;:::-;23754:25;;23793:20;23811:1;23793:20;:::i;:::-;23788:25;;23836:1;23833;23829:9;23822:16;;23857:3;23854:1;23851:10;23848:36;;;23864:18;;:::i;:::-;23848:36;23700:191;;;;:::o;23897:98::-;23948:6;23982:5;23976:12;23966:22;;23897:98;;;:::o;24001:168::-;24084:11;24118:6;24113:3;24106:19;24158:4;24153:3;24149:14;24134:29;;24001:168;;;;:::o;24175:373::-;24261:3;24289:38;24321:5;24289:38;:::i;:::-;24343:70;24406:6;24401:3;24343:70;:::i;:::-;24336:77;;24422:65;24480:6;24475:3;24468:4;24461:5;24457:16;24422:65;:::i;:::-;24512:29;24534:6;24512:29;:::i;:::-;24507:3;24503:39;24496:46;;24265:283;24175:373;;;;:::o;24554:640::-;24749:4;24787:3;24776:9;24772:19;24764:27;;24801:71;24869:1;24858:9;24854:17;24845:6;24801:71;:::i;:::-;24882:72;24950:2;24939:9;24935:18;24926:6;24882:72;:::i;:::-;24964;25032:2;25021:9;25017:18;25008:6;24964:72;:::i;:::-;25083:9;25077:4;25073:20;25068:2;25057:9;25053:18;25046:48;25111:76;25182:4;25173:6;25111:76;:::i;:::-;25103:84;;24554:640;;;;;;;:::o;25200:141::-;25256:5;25287:6;25281:13;25272:22;;25303:32;25329:5;25303:32;:::i;:::-;25200:141;;;;:::o;25347:349::-;25416:6;25465:2;25453:9;25444:7;25440:23;25436:32;25433:119;;;25471:79;;:::i;:::-;25433:119;25591:1;25616:63;25671:7;25662:6;25651:9;25647:22;25616:63;:::i;:::-;25606:73;;25562:127;25347:349;;;;:::o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\ncontract AliceERC721 is ERC721 {\n    constructor() ERC721(\"Alice ERC721 Token\", \"AliceERC721\") {}\n\n    function mint(address to, uint256 tokenId) public {\n        _mint(to, tokenId);\n    }\n\n    function burn(uint256 tokenId) public {\n        _burn(tokenId);\n    }\n}\n",
    "sourcePath": "/Users/matsukawatoshiya/programs/solidity/ether-atomic/contracts/AliceERC721.sol",
    "ast": {
        "absolutePath": "project:/contracts/AliceERC721.sol",
        "exportedSymbols": {
            "Address": [1472],
            "AliceERC721": [36],
            "Context": [1494],
            "ERC165": [1693],
            "ERC721": [981],
            "IERC165": [1705],
            "IERC721": [1097],
            "IERC721Metadata": [1142],
            "IERC721Receiver": [1115],
            "Math": [2570],
            "Strings": [1669]
        },
        "id": 37,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1,
                "literals": ["solidity", "^", "0.8", ".0"],
                "nodeType": "PragmaDirective",
                "src": "32:23:0"
            },
            {
                "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
                "file": "../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
                "id": 2,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 37,
                "sourceUnit": 982,
                "src": "57:73:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 3,
                            "name": "ERC721",
                            "nameLocations": ["156:6:0"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 981,
                            "src": "156:6:0"
                        },
                        "id": 4,
                        "nodeType": "InheritanceSpecifier",
                        "src": "156:6:0"
                    }
                ],
                "canonicalName": "AliceERC721",
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 36,
                "linearizedBaseContracts": [36, 981, 1142, 1097, 1693, 1705, 1494],
                "name": "AliceERC721",
                "nameLocation": "141:11:0",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 11,
                            "nodeType": "Block",
                            "src": "227:2:0",
                            "statements": []
                        },
                        "id": 12,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "hexValue": "416c6963652045524337323120546f6b656e",
                                        "id": 7,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "190:20:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_762a498e706edbbe7530be60a4b34ba18907e8c982501c6e6a987f8f69e8863e",
                                            "typeString": "literal_string \"Alice ERC721 Token\""
                                        },
                                        "value": "Alice ERC721 Token"
                                    },
                                    {
                                        "hexValue": "416c696365455243373231",
                                        "id": 8,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "212:13:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_271eba156122de24bc7722d547ca6106d413b02b4191317e2180c1cf556346c3",
                                            "typeString": "literal_string \"AliceERC721\""
                                        },
                                        "value": "AliceERC721"
                                    }
                                ],
                                "id": 9,
                                "kind": "baseConstructorSpecifier",
                                "modifierName": {
                                    "id": 6,
                                    "name": "ERC721",
                                    "nameLocations": ["183:6:0"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 981,
                                    "src": "183:6:0"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "183:43:0"
                            }
                        ],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "180:2:0"
                        },
                        "returnParameters": {
                            "id": 10,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "227:0:0"
                        },
                        "scope": 36,
                        "src": "169:60:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 24,
                            "nodeType": "Block",
                            "src": "285:35:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 20,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14,
                                                "src": "301:2:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 21,
                                                "name": "tokenId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16,
                                                "src": "305:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 19,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 637,
                                            "src": "295:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 22,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "295:18:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 23,
                                    "nodeType": "ExpressionStatement",
                                    "src": "295:18:0"
                                }
                            ]
                        },
                        "functionSelector": "40c10f19",
                        "id": 25,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mint",
                        "nameLocation": "244:4:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 17,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 14,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nameLocation": "257:2:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 25,
                                    "src": "249:10:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 13,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "249:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 16,
                                    "mutability": "mutable",
                                    "name": "tokenId",
                                    "nameLocation": "269:7:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 25,
                                    "src": "261:15:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 15,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "261:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "248:29:0"
                        },
                        "returnParameters": {
                            "id": 18,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "285:0:0"
                        },
                        "scope": 36,
                        "src": "235:85:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 34,
                            "nodeType": "Block",
                            "src": "364:31:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 31,
                                                "name": "tokenId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27,
                                                "src": "380:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 30,
                                            "name": "_burn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 704,
                                            "src": "374:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 32,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "374:14:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 33,
                                    "nodeType": "ExpressionStatement",
                                    "src": "374:14:0"
                                }
                            ]
                        },
                        "functionSelector": "42966c68",
                        "id": 35,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "burn",
                        "nameLocation": "335:4:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 28,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 27,
                                    "mutability": "mutable",
                                    "name": "tokenId",
                                    "nameLocation": "348:7:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 35,
                                    "src": "340:15:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 26,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "340:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "339:17:0"
                        },
                        "returnParameters": {
                            "id": 29,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "364:0:0"
                        },
                        "scope": 36,
                        "src": "326:69:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 37,
                "src": "132:265:0",
                "usedErrors": []
            }
        ],
        "src": "32:366:0"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
    },
    "networks": {
        "11155111": {
            "events": {},
            "links": {},
            "address": "0xA0Ce6944AcCa20a9201E36a42C6a2a4c7e42aB72",
            "transactionHash": "0xd1fce7050891b266900e90183d71500cffb48cb34874d33f37d6ab7580e83cd3"
        }
    },
    "schemaVersion": "3.4.11",
    "updatedAt": "2022-12-20T07:22:25.457Z",
    "networkType": "ethereum",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
            },
            "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
            },
            "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
            },
            "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
            },
            "name()": {
                "details": "See {IERC721Metadata-name}."
            },
            "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
            },
            "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
            },
            "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
            },
            "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
            },
            "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
            },
            "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
            },
            "tokenURI(uint256)": {
                "details": "See {IERC721Metadata-tokenURI}."
            },
            "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
