{
  "contractName": "NoahNFT",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "initName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "initSymbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "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": "",
          "type": "address"
        }
      ],
      "name": "balances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "operatorApprovals",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "owners",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokenApprovals",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "name": "setBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "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": "_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": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "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": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "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": "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": "to",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_tokenURI",
          "type": "string"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_tokenURI",
          "type": "string"
        }
      ],
      "name": "safeMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_tokenURI",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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\":[{\"internalType\":\"string\",\"name\":\"initName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"initSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"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\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"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\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorApprovals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"safeMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenApprovals\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/NoahNFT.sol\":\"NoahNFT\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/IERC165.sol\":{\"keccak256\":\"0x5101b6ad6c3a2d50f1b8060902ee4dfa55e6bbedf3c0568bc0fcc03eb4a9a316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b55436690d3d9fa61ac8922cad2b1a57a1b07830a38ae8022d86003d6c30ac9\",\"dweb:/ipfs/QmPBi9z2WdgKYAiCnAThaCmBLXk2znyyAncHFjkHEMhQwp\"]},\"project:/contracts/IERC721.sol\":{\"keccak256\":\"0x70be2d6bc1ab763925b82bde15c2c5fc3baed193998633f42c18c46c30eb914c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382ee7b3003bfaf140e5e8d29753bd1f2ef920c81527b3df86a77541636e065b\",\"dweb:/ipfs/QmVNxZw1P4mJrZ1WRTCeqTzn8NHpSGa9zhQLQ45TPo32FK\"]},\"project:/contracts/NoahNFT.sol\":{\"keccak256\":\"0x4bf76e535be27d17e12136cad0969aaaf8515d405c7a8820920cb3f44e4ff461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8379296b41a61d4daf7e66c86fda50ecdb8b5ff9a5f11ff2ce272ac7a502028a\",\"dweb:/ipfs/QmePDZw2U4VEZt622RQA6hmozAejxuoE9MbZ72jXLNaLzt\"]}},\"version\":1}",
  "bytecode": "[encoded data, 28772 characters]",
  "deployedBytecode": "[encoded data, 25552 characters]",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:8903:3",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "47:35:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "57:19:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "73:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "67:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "67:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "57:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "allocate_unbounded",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "40:6:3",
                "type": ""
              }
            ],
            "src": "7:75:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "177:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "194:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "197:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "187:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "187:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "187:12:3"
                }
              ]
            },
            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
            "nodeType": "YulFunctionDefinition",
            "src": "88:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "300:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "317:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "320:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "310:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "310:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "310:12:3"
                }
              ]
            },
            "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
            "nodeType": "YulFunctionDefinition",
            "src": "211:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "423:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "440:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "443:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "433:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "433:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "433:12:3"
                }
              ]
            },
            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
            "nodeType": "YulFunctionDefinition",
            "src": "334:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "546:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "563:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "566:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "556:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "556:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "556:12:3"
                }
              ]
            },
            "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
            "nodeType": "YulFunctionDefinition",
            "src": "457:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "628:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "638:38:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "656:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "663:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "652:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "652:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "672:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "668:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "668:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "648:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "648:28:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "638:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "round_up_to_mul_of_32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "611:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "621:6:3",
                "type": ""
              }
            ],
            "src": "580:102:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "716:152:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "733:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "736:77:3",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "726:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "726:88:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "726:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "830:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "833:4:3",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "823:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "823:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "823:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "854:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "857:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "847:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "847:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "847:15:3"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "688:180:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "917:238:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "927:58:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "949:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "size",
                            "nodeType": "YulIdentifier",
                            "src": "979:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "957:21:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "957:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "945:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "945:40:3"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "931:10:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1096:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1098:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1098:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1098:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1039:10:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1051:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1036:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1036:34:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1075:10:3"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1087:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1072:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1072:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "1033:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1033:62:3"
                  },
                  "nodeType": "YulIf",
                  "src": "1030:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1134:2:3",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "1138:10:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1127:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1127:22:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1127:22:3"
                }
              ]
            },
            "name": "finalize_allocation",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "903:6:3",
                "type": ""
              },
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "911:4:3",
                "type": ""
              }
            ],
            "src": "874:281:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1202:88:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1212:30:3",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "allocate_unbounded",
                      "nodeType": "YulIdentifier",
                      "src": "1222:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1222:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "1212:6:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1271:6:3"
                      },
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "1279:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "1251:19:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1251:33:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1251:33:3"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "1186:4:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "1195:6:3",
                "type": ""
              }
            ],
            "src": "1161:129:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1363:241:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1468:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1470:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1470:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1470:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1440:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1448:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1437:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1437:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "1434:56:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1500:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1530:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "round_up_to_mul_of_32",
                      "nodeType": "YulIdentifier",
                      "src": "1508:21:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1508:29:3"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "1500:4:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1574:23:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "1586:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1592:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1582:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1582:15:3"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "1574:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1347:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "1358:4:3",
                "type": ""
              }
            ],
            "src": "1296:308:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1672:184:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1682:10:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1691:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1686:1:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1751:63:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1776:3:3"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "1781:1:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1772:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1772:11:3"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "1795:3:3"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "1800:1:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1791:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1791:11:3"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "1785:5:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1785:18:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1765:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1765:39:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1765:39:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1712:1:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1715:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1709:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1709:13:3"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1723:19:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1725:15:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1734:1:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1737:2:3",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1730:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1730:10:3"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1725:1:3"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1705:3:3",
                    "statements": []
                  },
                  "src": "1701:113:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "1834:3:3"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1839:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1830:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1830:16:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1848:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1823:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1823:27:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1823:27:3"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "1654:3:3",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "1659:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1664:6:3",
                "type": ""
              }
            ],
            "src": "1610:246:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1957:339:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1967:75:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2034:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_t_string_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "1992:41:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1992:49:3"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "1976:15:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1976:66:3"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1967:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "2058:5:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2065:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2051:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2051:21:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2051:21:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2081:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "2096:5:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2103:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2092:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2092:16:3"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "2085:3:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2146:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
                            "nodeType": "YulIdentifier",
                            "src": "2148:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2148:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2148:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "2127:3:3"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2132:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2123:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2123:16:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2141:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2120:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2120:25:3"
                  },
                  "nodeType": "YulIf",
                  "src": "2117:112:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "2273:3:3"
                      },
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "2278:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2283:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "2238:34:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2238:52:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2238:52:3"
                }
              ]
            },
            "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "1930:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1935:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1943:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "1951:5:3",
                "type": ""
              }
            ],
            "src": "1862:434:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2389:282:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2438:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                            "nodeType": "YulIdentifier",
                            "src": "2440:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2440:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2440:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2417:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2425:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2413:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2413:17:3"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2432:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2409:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2409:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2402:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2402:35:3"
                  },
                  "nodeType": "YulIf",
                  "src": "2399:122:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2530:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2550:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2544:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2544:13:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2534:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2566:99:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2638:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2646:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2634:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2634:17:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2653:6:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2661:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "2575:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2575:90:3"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "2566:5:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_t_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2367:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2375:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "2383:5:3",
                "type": ""
              }
            ],
            "src": "2316:355:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2818:1041:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2864:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "2866:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2866:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2866:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2839:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2848:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2835:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2835:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2860:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2831:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2831:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "2828:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2957:291:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2972:38:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2996:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3007:1:3",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2992:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2992:17:3"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "2986:5:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2986:24:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2976:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3057:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "3059:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3059:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3059:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3029:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3037:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3026:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3026:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "3023:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3154:84:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3210:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3221:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3206:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3206:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3230:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_memory_ptr_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "3164:41:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3164:74:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3154:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3258:292:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3273:39:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3297:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3308:2:3",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3293:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3293:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "3287:5:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3287:25:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3277:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3359:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "3361:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3361:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3361:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3331:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3339:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3328:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3328:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "3325:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3456:84:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3512:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3523:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3508:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3508:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3532:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_memory_ptr_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "3466:41:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3466:74:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "3456:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3560:292:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3575:39:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3599:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3610:2:3",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3595:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3595:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "3589:5:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3589:25:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3579:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3661:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "3663:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3663:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3663:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3633:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3641:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3630:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3630:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "3627:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3758:84:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3814:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3825:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3810:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3810:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3834:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_memory_ptr_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "3768:41:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3768:74:3"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "3758:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2772:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2783:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2795:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2803:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2811:6:3",
                "type": ""
              }
            ],
            "src": "2677:1182:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3924:40:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3935:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3951:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3945:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3945:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "3935:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3907:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3917:6:3",
                "type": ""
              }
            ],
            "src": "3865:99:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3998:152:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4015:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4018:77:3",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4008:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4008:88:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4008:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4112:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4115:4:3",
                        "type": "",
                        "value": "0x22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4105:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4105:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4105:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4136:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4139:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "4129:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4129:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4129:15:3"
                }
              ]
            },
            "name": "panic_error_0x22",
            "nodeType": "YulFunctionDefinition",
            "src": "3970:180:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4207:269:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4217:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "4231:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4237:1:3",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "4227:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4227:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "4217:6:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4248:38:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "4278:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4284:1:3",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4274:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4274:12:3"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "4252:18:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4325:51:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4339:27:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "4353:6:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4361:4:3",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "4349:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4349:17:3"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "4339:6:3"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "4305:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4298:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4298:26:3"
                  },
                  "nodeType": "YulIf",
                  "src": "4295:81:3"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4428:42:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x22",
                            "nodeType": "YulIdentifier",
                            "src": "4442:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4442:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4442:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "4392:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "4415:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4423:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "4412:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4412:14:3"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "4389:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4389:38:3"
                  },
                  "nodeType": "YulIf",
                  "src": "4386:84:3"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "4191:4:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "4200:6:3",
                "type": ""
              }
            ],
            "src": "4156:320:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4536:87:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4546:11:3",
                  "value": {
                    "name": "ptr",
                    "nodeType": "YulIdentifier",
                    "src": "4554:3:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "4546:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4574:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "4577:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4567:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4567:14:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4567:14:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4590:26:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4608:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4611:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "4598:9:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4598:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "4590:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "4523:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "4531:4:3",
                "type": ""
              }
            ],
            "src": "4482:141:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4673:49:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4683:33:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4701:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4708:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4697:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4697:14:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4713:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "4693:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4693:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "4683:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "divide_by_32_ceil",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4656:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "4666:6:3",
                "type": ""
              }
            ],
            "src": "4629:93:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4781:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4791:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "bits",
                        "nodeType": "YulIdentifier",
                        "src": "4816:4:3"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4822:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "4812:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4812:16:3"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "4791:8:3"
                    }
                  ]
                }
              ]
            },
            "name": "shift_left_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "bits",
                "nodeType": "YulTypedName",
                "src": "4756:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4762:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "4772:8:3",
                "type": ""
              }
            ],
            "src": "4728:107:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4917:317:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4927:35:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBytes",
                        "nodeType": "YulIdentifier",
                        "src": "4948:10:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4960:1:3",
                        "type": "",
                        "value": "8"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "4944:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4944:18:3"
                  },
                  "variables": [
                    {
                      "name": "shiftBits",
                      "nodeType": "YulTypedName",
                      "src": "4931:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4971:109:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBits",
                        "nodeType": "YulIdentifier",
                        "src": "5002:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5013:66:3",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "shift_left_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "4983:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4983:97:3"
                  },
                  "variables": [
                    {
                      "name": "mask",
                      "nodeType": "YulTypedName",
                      "src": "4975:4:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5089:51:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBits",
                        "nodeType": "YulIdentifier",
                        "src": "5120:9:3"
                      },
                      {
                        "name": "toInsert",
                        "nodeType": "YulIdentifier",
                        "src": "5131:8:3"
                      }
                    ],
                    "functionName": {
                      "name": "shift_left_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "5101:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5101:39:3"
                  },
                  "variableNames": [
                    {
                      "name": "toInsert",
                      "nodeType": "YulIdentifier",
                      "src": "5089:8:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5149:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5162:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "mask",
                            "nodeType": "YulIdentifier",
                            "src": "5173:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "5169:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5169:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "5158:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5158:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "5149:5:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5188:40:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5201:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "toInsert",
                            "nodeType": "YulIdentifier",
                            "src": "5212:8:3"
                          },
                          {
                            "name": "mask",
                            "nodeType": "YulIdentifier",
                            "src": "5222:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5208:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5208:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "5198:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5198:30:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "5188:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "update_byte_slice_dynamic32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4878:5:3",
                "type": ""
              },
              {
                "name": "shiftBytes",
                "nodeType": "YulTypedName",
                "src": "4885:10:3",
                "type": ""
              },
              {
                "name": "toInsert",
                "nodeType": "YulTypedName",
                "src": "4897:8:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "4910:6:3",
                "type": ""
              }
            ],
            "src": "4841:393:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5285:32:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5295:16:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5306:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "5295:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5267:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "5277:7:3",
                "type": ""
              }
            ],
            "src": "5240:77:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5355:28:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5365:12:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5372:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "5365:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "identity",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5341:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "5351:3:3",
                "type": ""
              }
            ],
            "src": "5323:60:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5449:82:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5459:66:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5517:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "5499:17:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5499:24:3"
                          }
                        ],
                        "functionName": {
                          "name": "identity",
                          "nodeType": "YulIdentifier",
                          "src": "5490:8:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5490:34:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "5472:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5472:53:3"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "5459:9:3"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_uint256_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5429:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "5439:9:3",
                "type": ""
              }
            ],
            "src": "5389:142:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5584:28:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5594:12:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5601:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "5594:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "prepare_store_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5570:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "5580:3:3",
                "type": ""
              }
            ],
            "src": "5537:75:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5694:193:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5704:63:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_0",
                        "nodeType": "YulIdentifier",
                        "src": "5759:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "convert_t_uint256_to_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "5728:30:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5728:39:3"
                  },
                  "variables": [
                    {
                      "name": "convertedValue_0",
                      "nodeType": "YulTypedName",
                      "src": "5708:16:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "5783:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "5823:4:3"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "5817:5:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5817:11:3"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5830:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "convertedValue_0",
                                "nodeType": "YulIdentifier",
                                "src": "5862:16:3"
                              }
                            ],
                            "functionName": {
                              "name": "prepare_store_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "5838:23:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5838:41:3"
                          }
                        ],
                        "functionName": {
                          "name": "update_byte_slice_dynamic32",
                          "nodeType": "YulIdentifier",
                          "src": "5789:27:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5789:91:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nodeType": "YulIdentifier",
                      "src": "5776:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5776:105:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5776:105:3"
                }
              ]
            },
            "name": "update_storage_value_t_uint256_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "5671:4:3",
                "type": ""
              },
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "5677:6:3",
                "type": ""
              },
              {
                "name": "value_0",
                "nodeType": "YulTypedName",
                "src": "5685:7:3",
                "type": ""
              }
            ],
            "src": "5618:269:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5942:24:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5952:8:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5959:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "5952:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "zero_value_for_split_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "5938:3:3",
                "type": ""
              }
            ],
            "src": "5893:73:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6025:136:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6035:46:3",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "zero_value_for_split_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "6049:30:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6049:32:3"
                  },
                  "variables": [
                    {
                      "name": "zero_0",
                      "nodeType": "YulTypedName",
                      "src": "6039:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "6134:4:3"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6140:6:3"
                      },
                      {
                        "name": "zero_0",
                        "nodeType": "YulIdentifier",
                        "src": "6148:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_t_uint256_to_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "6090:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6090:65:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6090:65:3"
                }
              ]
            },
            "name": "storage_set_to_zero_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "6011:4:3",
                "type": ""
              },
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "6017:6:3",
                "type": ""
              }
            ],
            "src": "5972:189:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6217:136:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6284:63:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "6328:5:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6335:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "storage_set_to_zero_t_uint256",
                            "nodeType": "YulIdentifier",
                            "src": "6298:29:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6298:39:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6298:39:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "start",
                        "nodeType": "YulIdentifier",
                        "src": "6237:5:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "6244:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6234:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6234:14:3"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6249:26:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6251:22:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "6264:5:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6271:1:3",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6260:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6260:13:3"
                        },
                        "variableNames": [
                          {
                            "name": "start",
                            "nodeType": "YulIdentifier",
                            "src": "6251:5:3"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6231:2:3",
                    "statements": []
                  },
                  "src": "6227:120:3"
                }
              ]
            },
            "name": "clear_storage_range_t_bytes1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nodeType": "YulTypedName",
                "src": "6205:5:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "6212:3:3",
                "type": ""
              }
            ],
            "src": "6167:186:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6438:464:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6464:431:3",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6478:54:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "6526:5:3"
                            }
                          ],
                          "functionName": {
                            "name": "array_dataslot_t_string_storage",
                            "nodeType": "YulIdentifier",
                            "src": "6494:31:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6494:38:3"
                        },
                        "variables": [
                          {
                            "name": "dataArea",
                            "nodeType": "YulTypedName",
                            "src": "6482:8:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6545:63:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "dataArea",
                              "nodeType": "YulIdentifier",
                              "src": "6568:8:3"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "startIndex",
                                  "nodeType": "YulIdentifier",
                                  "src": "6596:10:3"
                                }
                              ],
                              "functionName": {
                                "name": "divide_by_32_ceil",
                                "nodeType": "YulIdentifier",
                                "src": "6578:17:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6578:29:3"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6564:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6564:44:3"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "6549:11:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6765:27:3",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6767:23:3",
                              "value": {
                                "name": "dataArea",
                                "nodeType": "YulIdentifier",
                                "src": "6782:8:3"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "6767:11:3"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "6749:10:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6761:2:3",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "6746:2:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6746:18:3"
                        },
                        "nodeType": "YulIf",
                        "src": "6743:49:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "deleteStart",
                              "nodeType": "YulIdentifier",
                              "src": "6834:11:3"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "dataArea",
                                  "nodeType": "YulIdentifier",
                                  "src": "6851:8:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "6879:3:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "divide_by_32_ceil",
                                    "nodeType": "YulIdentifier",
                                    "src": "6861:17:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6861:22:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "6847:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6847:37:3"
                            }
                          ],
                          "functionName": {
                            "name": "clear_storage_range_t_bytes1",
                            "nodeType": "YulIdentifier",
                            "src": "6805:28:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6805:80:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6805:80:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "6455:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6460:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6452:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6452:11:3"
                  },
                  "nodeType": "YulIf",
                  "src": "6449:446:3"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "6414:5:3",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "6421:3:3",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "6426:10:3",
                "type": ""
              }
            ],
            "src": "6359:543:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6971:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6981:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "bits",
                        "nodeType": "YulIdentifier",
                        "src": "7006:4:3"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7012:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "7002:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7002:16:3"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "6981:8:3"
                    }
                  ]
                }
              ]
            },
            "name": "shift_right_unsigned_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "bits",
                "nodeType": "YulTypedName",
                "src": "6946:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6952:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "6962:8:3",
                "type": ""
              }
            ],
            "src": "6908:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7082:118:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7092:68:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7141:1:3",
                                "type": "",
                                "value": "8"
                              },
                              {
                                "name": "bytes",
                                "nodeType": "YulIdentifier",
                                "src": "7144:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nodeType": "YulIdentifier",
                              "src": "7137:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7137:13:3"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7156:1:3",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "7152:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7152:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "shift_right_unsigned_dynamic",
                          "nodeType": "YulIdentifier",
                          "src": "7108:28:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7108:51:3"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "7104:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7104:56:3"
                  },
                  "variables": [
                    {
                      "name": "mask",
                      "nodeType": "YulTypedName",
                      "src": "7096:4:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7169:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "7183:4:3"
                      },
                      {
                        "name": "mask",
                        "nodeType": "YulIdentifier",
                        "src": "7189:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "7179:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7179:15:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "7169:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "mask_bytes_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "7059:4:3",
                "type": ""
              },
              {
                "name": "bytes",
                "nodeType": "YulTypedName",
                "src": "7065:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "7075:6:3",
                "type": ""
              }
            ],
            "src": "7031:169:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7286:214:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7419:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "7446:4:3"
                      },
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "7452:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "mask_bytes_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "7427:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7427:29:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "7419:4:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7465:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "7476:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7486:1:3",
                            "type": "",
                            "value": "2"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "7489:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "mul",
                          "nodeType": "YulIdentifier",
                          "src": "7482:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7482:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "7473:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7473:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "7465:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "7267:4:3",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "7273:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "7281:4:3",
                "type": ""
              }
            ],
            "src": "7205:295:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7597:1303:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7608:51:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "7655:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "7622:32:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7622:37:3"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "7612:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7744:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "7746:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7746:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7746:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "7716:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7724:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7713:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7713:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "7710:56:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7776:52:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nodeType": "YulIdentifier",
                            "src": "7822:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "sload",
                          "nodeType": "YulIdentifier",
                          "src": "7816:5:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7816:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "7790:25:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7790:38:3"
                  },
                  "variables": [
                    {
                      "name": "oldLen",
                      "nodeType": "YulTypedName",
                      "src": "7780:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "7921:4:3"
                      },
                      {
                        "name": "oldLen",
                        "nodeType": "YulIdentifier",
                        "src": "7927:6:3"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "7935:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_t_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "7875:45:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7875:67:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7875:67:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7952:18:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7969:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "7956:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7980:17:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7993:4:3",
                    "type": "",
                    "value": "0x20"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "7980:9:3"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "8044:611:3",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "8058:37:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "8077:6:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "8089:4:3",
                                      "type": "",
                                      "value": "0x1f"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "8085:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "8085:9:3"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "8073:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8073:22:3"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "8062:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "8109:51:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "8155:4:3"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_t_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "8123:31:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8123:37:3"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "8113:6:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "8173:10:3",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8182:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "8177:1:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "8241:163:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8266:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "8284:3:3"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "8289:9:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "8280:3:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8280:19:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "8274:5:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8274:26:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "8259:6:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8259:42:3"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "8259:42:3"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8318:24:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8332:6:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8340:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8328:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8328:14:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8318:6:3"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8359:31:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8376:9:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8387:2:3",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8372:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8372:18:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "8359:9:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "8207:1:3"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "8210:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "8204:2:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8204:14:3"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "8219:21:3",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8221:17:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8230:1:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8233:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8226:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8226:12:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "8221:1:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "8200:3:3",
                              "statements": []
                            },
                            "src": "8196:208:3"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "8440:156:3",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8458:43:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "8485:3:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8490:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8481:3:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8481:19:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "8475:5:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8475:26:3"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "8462:9:3",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8525:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "8552:9:3"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "8567:6:3"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8575:4:3",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8563:3:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8563:17:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mask_bytes_dynamic",
                                          "nodeType": "YulIdentifier",
                                          "src": "8533:18:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8533:48:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "8518:6:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8518:64:3"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "8518:64:3"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "8423:7:3"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "8432:6:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "8420:2:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8420:19:3"
                            },
                            "nodeType": "YulIf",
                            "src": "8417:179:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "8616:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "8630:6:3"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8638:1:3",
                                          "type": "",
                                          "value": "2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "8626:3:3"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8626:14:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "8642:1:3",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "8622:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "8622:22:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "8609:6:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8609:36:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "8609:36:3"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "8037:618:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8042:1:3",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "8672:222:3",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "8686:14:3",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8699:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "8690:5:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "8723:67:3",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8741:35:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "8760:3:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8765:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8756:3:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8756:19:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "8750:5:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8750:26:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "8741:5:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "8716:6:3"
                            },
                            "nodeType": "YulIf",
                            "src": "8713:77:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "8810:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "8869:5:3"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "8876:6:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "8816:52:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "8816:67:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "8803:6:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8803:81:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "8803:81:3"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "8664:230:3",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "8017:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8025:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8014:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8014:14:3"
                  },
                  "nodeType": "YulSwitch",
                  "src": "8007:887:3"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "7586:4:3",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "7592:3:3",
                "type": ""
              }
            ],
            "src": "7505:1395:3"
          }
        ]
      },
      "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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 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 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_string_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_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 abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_string_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_memory_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // string\n    function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := mload(offset)\n        array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := mload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := mload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := mload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value2 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\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 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": 3,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:38799:3",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "47:35:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "57:19:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "73:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "67:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "67:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "57:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "allocate_unbounded",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "40:6:3",
                "type": ""
              }
            ],
            "src": "7:75:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "177:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "194:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "197:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "187:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "187:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "187:12:3"
                }
              ]
            },
            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
            "nodeType": "YulFunctionDefinition",
            "src": "88:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "300:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "317:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "320:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "310:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "310:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "310:12:3"
                }
              ]
            },
            "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
            "nodeType": "YulFunctionDefinition",
            "src": "211:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "378:105:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "388:89:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "403:5:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "410:66:3",
                        "type": "",
                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "399:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "399:78:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "388:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "360:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "370:7:3",
                "type": ""
              }
            ],
            "src": "334:149:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "531:78:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "587:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "596:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "599:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "589:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "589:12:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "589:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "554:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "578:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_bytes4",
                              "nodeType": "YulIdentifier",
                              "src": "561:16:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "561:23:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "551:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "551:34:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "544:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "544:42:3"
                  },
                  "nodeType": "YulIf",
                  "src": "541:62:3"
                }
              ]
            },
            "name": "validator_revert_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "524:5:3",
                "type": ""
              }
            ],
            "src": "489:120:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "666:86:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "676:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "698:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "685:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "685:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "676:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "740:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "714:25:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "714:32:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "714:32:3"
                }
              ]
            },
            "name": "abi_decode_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "644:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "652:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "660:5:3",
                "type": ""
              }
            ],
            "src": "615:137:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "823:262:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "869:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "871:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "871:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "871:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "844:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "853:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "840:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "840:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "865:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "836:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "836:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "833:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "962:116:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "977:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "991:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "981:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1006:62:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1040:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1051:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1036:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1036:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1060:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bytes4",
                          "nodeType": "YulIdentifier",
                          "src": "1016:19:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1016:52:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1006:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "793:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "804:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "816:6:3",
                "type": ""
              }
            ],
            "src": "758:327:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1133:48:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1143:32:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1168:5:3"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "1161:6:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1161:13:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1154:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1154:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "1143:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1115:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "1125:7:3",
                "type": ""
              }
            ],
            "src": "1091:90:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1246:50:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1263:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1283:5:3"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "1268:14:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1268:21:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1256:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1256:34:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1256:34:3"
                }
              ]
            },
            "name": "abi_encode_t_bool_to_t_bool_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1234:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1241:3:3",
                "type": ""
              }
            ],
            "src": "1187:109:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1394:118:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1404:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1416:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1427:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1412:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1412:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1404:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1478:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1491:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1502:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1487:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1487:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bool_to_t_bool_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "1440:37:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1440:65:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1440:65:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1366:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1378:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1389:4:3",
                "type": ""
              }
            ],
            "src": "1302:210:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1563:32:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1573:16:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1584:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "1573:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1545:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "1555:7:3",
                "type": ""
              }
            ],
            "src": "1518:77:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1644:79:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1701:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1710:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1713:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1703:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1703:12:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1703:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1667:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1692:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "1674:17:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1674:24:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1664:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1664:35:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1657:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1657:43:3"
                  },
                  "nodeType": "YulIf",
                  "src": "1654:63:3"
                }
              ]
            },
            "name": "validator_revert_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1637:5:3",
                "type": ""
              }
            ],
            "src": "1601:122:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1781:87:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1791:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1813:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1800:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1800:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "1791:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1856:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "1829:26:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1829:33:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1829:33:3"
                }
              ]
            },
            "name": "abi_decode_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1759:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1767:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1775:5:3",
                "type": ""
              }
            ],
            "src": "1729:139:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1940:263:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1986:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "1988:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1988:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1988:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1961:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1970:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1957:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1957:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1982:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1953:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1953:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "1950:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2079:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2094:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2108:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2098:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2123:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2158:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2169:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2154:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2154:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2178:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "2133:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2133:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "2123:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1910:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1921:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1933:6:3",
                "type": ""
              }
            ],
            "src": "1874:329:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2254:81:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2264:65:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2279:5:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2286:42:3",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "2275:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2275:54:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "2264:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint160",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2236:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "2246:7:3",
                "type": ""
              }
            ],
            "src": "2209:126:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2386:51:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2396:35:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2425:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "2407:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2407:24:3"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "2396:7:3"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2368:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "2378:7:3",
                "type": ""
              }
            ],
            "src": "2341:96:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2508:53:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2525:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2548:5:3"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "2530:17:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2530:24:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2518:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2518:37:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2518:37:3"
                }
              ]
            },
            "name": "abi_encode_t_address_to_t_address_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2496:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2503:3:3",
                "type": ""
              }
            ],
            "src": "2443:118:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2665:124:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2675:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2687:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2698:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2683:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2683:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2675:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "2755:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2768:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2779:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2764:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2764:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2711:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2711:71:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2711:71:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2637:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2649:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2660:4:3",
                "type": ""
              }
            ],
            "src": "2567:222:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2854:40:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2865:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2881:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2875:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2875:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "2865:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2837:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2847:6:3",
                "type": ""
              }
            ],
            "src": "2795:99:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2996:73:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3013:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3018:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3006:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3006:19:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3006:19:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3034:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3053:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3058:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3049:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3049:14:3"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "3034:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2968:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2973:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "2984:11:3",
                "type": ""
              }
            ],
            "src": "2900:169:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3137:184:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3147:10:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3156:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "3151:1:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3216:63:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "3241:3:3"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "3246:1:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3237:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3237:11:3"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "3260:3:3"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "3265:1:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "3256:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3256:11:3"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "3250:5:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3250:18:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "3230:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3230:39:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3230:39:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "3177:1:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3180:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "3174:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3174:13:3"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "3188:19:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3190:15:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "3199:1:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3202:2:3",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "3195:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3195:10:3"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "3190:1:3"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "3170:3:3",
                    "statements": []
                  },
                  "src": "3166:113:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "3299:3:3"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3304:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3295:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3295:16:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3313:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3288:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3288:27:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3288:27:3"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "3119:3:3",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "3124:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3129:6:3",
                "type": ""
              }
            ],
            "src": "3075:246:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3375:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3385:38:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3403:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3410:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3399:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3399:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3419:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "3415:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3415:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "3395:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3395:28:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "3385:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "round_up_to_mul_of_32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3358:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "3368:6:3",
                "type": ""
              }
            ],
            "src": "3327:102:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3527:285:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3537:53:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3584:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "3551:32:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3551:39:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "3541:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3599:78:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3665:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3670:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3606:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3606:71:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "3599:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3725:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3732:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3721:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3721:16:3"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3739:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3744:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "3686:34:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3686:65:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3686:65:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3760:46:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3771:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3798:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "3776:21:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3776:29:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3767:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3767:39:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3760:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3508:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3515:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3523:3:3",
                "type": ""
              }
            ],
            "src": "3435:377:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3936:195:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3946:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3958:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3969:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3954:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3954:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3946:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3993:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4004:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3989:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3989:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "4012:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4018:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4008:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4008:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3982:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3982:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3982:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4038:86:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4110:6:3"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "4119:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4046:63:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4046:78:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4038:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3908:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3920:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3931:4:3",
                "type": ""
              }
            ],
            "src": "3818:313:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4180:79:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4237:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4246:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4249:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4239:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4239:12:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4239:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4203:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4228:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "4210:17:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4210:24:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "4200:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4200:35:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4193:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4193:43:3"
                  },
                  "nodeType": "YulIf",
                  "src": "4190:63:3"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4173:5:3",
                "type": ""
              }
            ],
            "src": "4137:122:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4317:87:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4327:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4349:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4336:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4336:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "4327:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4392:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "4365:26:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4365:33:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4365:33:3"
                }
              ]
            },
            "name": "abi_decode_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "4295:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4303:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4311:5:3",
                "type": ""
              }
            ],
            "src": "4265:139:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4493:391:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4539:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "4541:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4541:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4541:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4514:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4523:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4510:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4510:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4535:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4506:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4506:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "4503:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "4632:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4647:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4661:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "4651:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4676:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4711:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4722:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4707:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4707:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4731:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "4686:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4686:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "4676:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "4759:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4774:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4788:2:3",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "4778:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4804:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4839:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4850:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4835:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4835:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4859:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "4814:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4814:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "4804:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4455:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4466:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4478:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4486:6:3",
                "type": ""
              }
            ],
            "src": "4410:474:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4973:391:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5019:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "5021:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5021:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5021:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4994:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5003:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4990:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4990:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5015:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4986:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4986:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "4983:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "5112:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "5127:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5141:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "5131:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5156:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5191:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "5202:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5187:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5187:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5211:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "5166:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5166:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "5156:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "5239:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "5254:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5268:2:3",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "5258:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5284:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5319:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "5330:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5315:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5315:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5339:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "5294:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5294:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "5284:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4935:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4946:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4958:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4966:6:3",
                "type": ""
              }
            ],
            "src": "4890:474:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5435:53:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5452:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5475:5:3"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "5457:17:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5457:24:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5445:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5445:37:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5445:37:3"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5423:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5430:3:3",
                "type": ""
              }
            ],
            "src": "5370:118:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5592:124:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5602:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5614:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5625:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5610:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5610:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5602:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5682:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5695:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5706:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5691:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5691:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5638:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5638:71:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5638:71:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5564:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5576:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5587:4:3",
                "type": ""
              }
            ],
            "src": "5494:222:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5822:519:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5868:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "5870:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5870:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5870:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5843:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5852:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5839:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5839:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5864:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5835:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5835:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "5832:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "5961:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "5976:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5990:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "5980:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6005:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6040:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "6051:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6036:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6036:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6060:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "6015:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6015:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "6005:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "6088:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6103:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6117:2:3",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "6107:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6133:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6168:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "6179:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6164:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6164:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6188:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "6143:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6143:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "6133:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "6216:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6231:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6245:2:3",
                        "type": "",
                        "value": "64"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "6235:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6261:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6296:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "6307:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6292:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6292:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6316:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "6271:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6271:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "6261:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5776:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5787:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5799:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5807:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5815:6:3",
                "type": ""
              }
            ],
            "src": "5722:619:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6413:263:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6459:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "6461:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6461:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6461:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6434:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6443:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6430:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6430:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6455:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6426:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6426:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "6423:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "6552:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "6567:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6581:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "6571:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6596:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6631:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "6642:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6627:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6627:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6651:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "6606:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6606:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "6596:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6383:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6394:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6406:6:3",
                "type": ""
              }
            ],
            "src": "6347:329:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6771:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6788:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6791:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "6781:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6781:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6781:12:3"
                }
              ]
            },
            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
            "nodeType": "YulFunctionDefinition",
            "src": "6682:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6894:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6911:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6914:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "6904:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6904:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6904:12:3"
                }
              ]
            },
            "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
            "nodeType": "YulFunctionDefinition",
            "src": "6805:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6956:152:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6973:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6976:77:3",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6966:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6966:88:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6966:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7070:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7073:4:3",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7063:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7063:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7063:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7094:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7097:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "7087:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7087:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7087:15:3"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "6928:180:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7157:238:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7167:58:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "7189:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "size",
                            "nodeType": "YulIdentifier",
                            "src": "7219:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "7197:21:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7197:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7185:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7185:40:3"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "7171:10:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7336:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "7338:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7338:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7338:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "7279:10:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7291:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "7276:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7276:34:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "7315:10:3"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "7327:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "7312:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7312:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "7273:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7273:62:3"
                  },
                  "nodeType": "YulIf",
                  "src": "7270:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7374:2:3",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "7378:10:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7367:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7367:22:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7367:22:3"
                }
              ]
            },
            "name": "finalize_allocation",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "7143:6:3",
                "type": ""
              },
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "7151:4:3",
                "type": ""
              }
            ],
            "src": "7114:281:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7442:88:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7452:30:3",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "allocate_unbounded",
                      "nodeType": "YulIdentifier",
                      "src": "7462:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7462:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "7452:6:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "7511:6:3"
                      },
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "7519:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "7491:19:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7491:33:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7491:33:3"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "7426:4:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "7435:6:3",
                "type": ""
              }
            ],
            "src": "7401:129:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7603:241:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7708:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "7710:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7710:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7710:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7680:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7688:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7677:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7677:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "7674:56:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7740:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7770:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "round_up_to_mul_of_32",
                      "nodeType": "YulIdentifier",
                      "src": "7748:21:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7748:29:3"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "7740:4:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7814:23:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "7826:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7832:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7822:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7822:15:3"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "7814:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "7587:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "7598:4:3",
                "type": ""
              }
            ],
            "src": "7536:308:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7914:82:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "7937:3:3"
                      },
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "7942:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7947:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "7924:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7924:30:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7924:30:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "7974:3:3"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "7979:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7970:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7970:16:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7988:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7963:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7963:27:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7963:27:3"
                }
              ]
            },
            "name": "copy_calldata_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "7896:3:3",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "7901:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "7906:6:3",
                "type": ""
              }
            ],
            "src": "7850:146:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8086:341:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8096:75:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "8163:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_t_string_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "8121:41:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8121:49:3"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8105:15:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8105:66:3"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "8096:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "8187:5:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8194:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8180:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8180:21:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8180:21:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8210:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "8225:5:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8232:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8221:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8221:16:3"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "8214:3:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8275:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
                            "nodeType": "YulIdentifier",
                            "src": "8277:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8277:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8277:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "8256:3:3"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "8261:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8252:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8252:16:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "8270:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8249:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8249:25:3"
                  },
                  "nodeType": "YulIf",
                  "src": "8246:112:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "8404:3:3"
                      },
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "8409:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8414:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "copy_calldata_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "8367:36:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8367:54:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8367:54:3"
                }
              ]
            },
            "name": "abi_decode_available_length_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "8059:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "8064:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8072:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "8080:5:3",
                "type": ""
              }
            ],
            "src": "8002:425:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8509:278:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8558:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                            "nodeType": "YulIdentifier",
                            "src": "8560:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8560:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8560:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "8537:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8545:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8533:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8533:17:3"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "8552:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "8529:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8529:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8522:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8522:35:3"
                  },
                  "nodeType": "YulIf",
                  "src": "8519:122:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8650:34:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8677:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8664:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8664:20:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "8654:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8693:88:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8754:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8762:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8750:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8750:17:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8769:6:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "8777:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "8702:47:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8702:79:3"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "8693:5:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "8487:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8495:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "8503:5:3",
                "type": ""
              }
            ],
            "src": "8447:340:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8869:433:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8915:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "8917:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8917:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8917:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8890:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8899:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8886:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8886:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8911:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8882:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8882:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "8879:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "9008:287:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "9023:45:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "9054:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9065:1:3",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9050:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9050:17:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "9037:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9037:31:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "9027:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "9115:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "9117:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9117:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "9117:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9087:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9095:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "9084:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9084:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "9081:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "9212:73:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "9257:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "9268:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9253:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9253:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9277:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "9222:30:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9222:63:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "9212:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8839:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8850:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8862:6:3",
                "type": ""
              }
            ],
            "src": "8793:509:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9348:76:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9402:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9411:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9414:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9404:6:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9404:12:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9404:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "9371:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9393:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_bool",
                              "nodeType": "YulIdentifier",
                              "src": "9378:14:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9378:21:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "9368:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9368:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9361:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9361:40:3"
                  },
                  "nodeType": "YulIf",
                  "src": "9358:60:3"
                }
              ]
            },
            "name": "validator_revert_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9341:5:3",
                "type": ""
              }
            ],
            "src": "9308:116:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9479:84:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9489:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9511:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9498:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9498:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "9489:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9551:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_bool",
                      "nodeType": "YulIdentifier",
                      "src": "9527:23:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9527:30:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9527:30:3"
                }
              ]
            },
            "name": "abi_decode_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "9457:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9465:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9473:5:3",
                "type": ""
              }
            ],
            "src": "9430:133:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9649:388:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9695:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "9697:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9697:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9697:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9670:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9679:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9666:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9666:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9691:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9662:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9662:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "9659:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "9788:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "9803:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9817:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "9807:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "9832:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "9867:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "9878:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9863:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9863:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9887:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "9842:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9842:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "9832:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "9915:115:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "9930:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9944:2:3",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "9934:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "9960:60:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "9992:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "10003:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9988:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9988:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10012:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "9970:17:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9970:50:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "9960:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9611:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9622:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9634:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9642:6:3",
                "type": ""
              }
            ],
            "src": "9569:468:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10132:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10149:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10152:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "10142:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10142:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10142:12:3"
                }
              ]
            },
            "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
            "nodeType": "YulFunctionDefinition",
            "src": "10043:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10255:28:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10272:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10275:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "10265:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10265:12:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10265:12:3"
                }
              ]
            },
            "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
            "nodeType": "YulFunctionDefinition",
            "src": "10166:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10376:478:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10425:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                            "nodeType": "YulIdentifier",
                            "src": "10427:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10427:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10427:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "10404:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10412:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "10400:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10400:17:3"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "10419:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "10396:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10396:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10389:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10389:35:3"
                  },
                  "nodeType": "YulIf",
                  "src": "10386:122:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10517:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "10540:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10527:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10527:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "10517:6:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10590:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                            "nodeType": "YulIdentifier",
                            "src": "10592:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10592:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10592:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10562:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10570:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10559:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10559:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "10556:117:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10682:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "10698:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10706:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10694:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10694:17:3"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "10682:8:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10765:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                            "nodeType": "YulIdentifier",
                            "src": "10767:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10767:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10767:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulIdentifier",
                            "src": "10730:8:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "10744:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10752:4:3",
                                "type": "",
                                "value": "0x01"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nodeType": "YulIdentifier",
                              "src": "10740:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10740:17:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10726:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10726:32:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "10760:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10723:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10723:41:3"
                  },
                  "nodeType": "YulIf",
                  "src": "10720:128:3"
                }
              ]
            },
            "name": "abi_decode_t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "10343:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10351:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "10359:8:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10369:6:3",
                "type": ""
              }
            ],
            "src": "10302:552:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10996:827:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11043:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "11045:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11045:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11045:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11017:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11026:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11013:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11013:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11038:3:3",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11009:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11009:33:3"
                  },
                  "nodeType": "YulIf",
                  "src": "11006:120:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "11136:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "11151:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11165:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "11155:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "11180:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "11215:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "11226:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "11211:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11211:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11235:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "11190:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11190:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "11180:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "11263:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "11278:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11292:2:3",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "11282:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "11308:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "11343:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "11354:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "11339:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11339:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11363:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "11318:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11318:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "11308:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "11391:118:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "11406:16:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11420:2:3",
                        "type": "",
                        "value": "64"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "11410:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "11436:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "11471:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "11482:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "11467:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11467:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11491:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "11446:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11446:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "11436:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "11519:297:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "11534:46:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "11565:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11576:2:3",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "11561:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11561:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "11548:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11548:32:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "11538:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "11627:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "11629:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "11629:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "11629:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11599:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11607:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "11596:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11596:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "11593:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "11724:82:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "11778:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "11789:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "11774:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11774:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11798:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bytes_calldata_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "11742:31:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11742:64:3"
                      },
                      "variableNames": [
                        {
                          "name": "value3",
                          "nodeType": "YulIdentifier",
                          "src": "11724:6:3"
                        },
                        {
                          "name": "value4",
                          "nodeType": "YulIdentifier",
                          "src": "11732:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10934:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10945:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10957:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10965:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "10973:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "10981:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "10989:6:3",
                "type": ""
              }
            ],
            "src": "10860:963:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11922:561:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11968:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "11970:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11970:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11970:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11943:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11952:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11939:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11939:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11964:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11935:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11935:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "11932:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "12061:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "12076:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12090:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "12080:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "12105:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "12140:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "12151:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12136:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12136:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12160:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "12115:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12115:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "12105:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "12188:288:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "12203:46:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "12234:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12245:2:3",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12230:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12230:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "12217:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12217:32:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "12207:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "12296:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "12298:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "12298:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "12298:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "12268:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12276:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "12265:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12265:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "12262:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "12393:73:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "12438:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "12449:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12434:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12434:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12458:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "12403:30:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12403:63:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "12393:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11884:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11895:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11907:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11915:6:3",
                "type": ""
              }
            ],
            "src": "11829:654:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12578:478:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12627:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                            "nodeType": "YulIdentifier",
                            "src": "12629:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12629:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12629:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "12606:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12614:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12602:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12602:17:3"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "12621:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "12598:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12598:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "12591:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12591:35:3"
                  },
                  "nodeType": "YulIf",
                  "src": "12588:122:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12719:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "12742:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12729:12:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12729:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "12719:6:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12792:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                            "nodeType": "YulIdentifier",
                            "src": "12794:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12794:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12794:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12764:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12772:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12761:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12761:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "12758:117:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12884:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "12900:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12908:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12896:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12896:17:3"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "12884:8:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12967:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                            "nodeType": "YulIdentifier",
                            "src": "12969:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12969:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12969:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulIdentifier",
                            "src": "12932:8:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "12946:6:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12954:4:3",
                                "type": "",
                                "value": "0x01"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nodeType": "YulIdentifier",
                              "src": "12942:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12942:17:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12928:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12928:32:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "12962:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12925:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12925:41:3"
                  },
                  "nodeType": "YulIf",
                  "src": "12922:128:3"
                }
              ]
            },
            "name": "abi_decode_t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "12545:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12553:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "12561:8:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "12571:6:3",
                "type": ""
              }
            ],
            "src": "12503:553:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13165:571:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13211:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "13213:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13213:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13213:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13186:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13195:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13182:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13182:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13207:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13178:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13178:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "13175:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13304:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13319:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13333:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "13323:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "13348:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "13383:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "13394:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13379:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13379:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13403:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "13358:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13358:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "13348:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13431:298:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13446:46:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "13477:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13488:2:3",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13473:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13473:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "13460:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13460:32:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "13450:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "13539:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "13541:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "13541:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "13541:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "13511:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13519:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "13508:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13508:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "13505:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "13636:83:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "13691:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "13702:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13687:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13687:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13711:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_calldata_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "13654:32:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13654:65:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "13636:6:3"
                        },
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "13644:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13119:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13130:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13142:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13150:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13158:6:3",
                "type": ""
              }
            ],
            "src": "13062:674:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13881:878:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13927:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "13929:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13929:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13929:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13902:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13911:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13898:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13898:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13923:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13894:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13894:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "13891:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14020:117:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14035:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14049:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "14039:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "14064:63:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "14099:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "14110:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14095:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14095:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14119:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "14074:20:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14074:53:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "14064:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14147:298:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14162:46:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "14193:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14204:2:3",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14189:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14189:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "14176:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14176:32:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "14166:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "14255:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "14257:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14257:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "14257:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "14227:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14235:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "14224:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14224:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "14221:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "14352:83:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "14407:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "14418:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14403:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14403:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14427:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_string_calldata_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "14370:32:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14370:65:3"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "14352:6:3"
                        },
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "14360:6:3"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14455:297:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14470:46:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "14501:9:3"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14512:2:3",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14497:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14497:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "14484:12:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14484:32:3"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "14474:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "14563:83:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                "nodeType": "YulIdentifier",
                                "src": "14565:77:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14565:79:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "14565:79:3"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "14535:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14543:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "14532:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14532:30:3"
                      },
                      "nodeType": "YulIf",
                      "src": "14529:117:3"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "14660:82:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "14714:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "14725:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14710:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14710:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14734:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bytes_calldata_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "14678:31:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14678:64:3"
                      },
                      "variableNames": [
                        {
                          "name": "value3",
                          "nodeType": "YulIdentifier",
                          "src": "14660:6:3"
                        },
                        {
                          "name": "value4",
                          "nodeType": "YulIdentifier",
                          "src": "14668:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_calldata_ptrt_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13819:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13830:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13842:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13850:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13858:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13866:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "13874:6:3",
                "type": ""
              }
            ],
            "src": "13742:1017:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14793:152:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14810:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14813:77:3",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14803:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14803:88:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14803:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14907:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14910:4:3",
                        "type": "",
                        "value": "0x22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14900:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14900:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14900:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14931:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14934:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "14924:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14924:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14924:15:3"
                }
              ]
            },
            "name": "panic_error_0x22",
            "nodeType": "YulFunctionDefinition",
            "src": "14765:180:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15002:269:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "15012:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "15026:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15032:1:3",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "15022:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15022:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "15012:6:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15043:38:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "15073:4:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15079:1:3",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "15069:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15069:12:3"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "15047:18:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15120:51:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "15134:27:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "15148:6:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15156:4:3",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "15144:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15144:17:3"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "15134:6:3"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "15100:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "15093:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15093:26:3"
                  },
                  "nodeType": "YulIf",
                  "src": "15090:81:3"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15223:42:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x22",
                            "nodeType": "YulIdentifier",
                            "src": "15237:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15237:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15237:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "15187:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "15210:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15218:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "15207:2:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15207:14:3"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "15184:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15184:38:3"
                  },
                  "nodeType": "YulIf",
                  "src": "15181:84:3"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "14986:4:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "14995:6:3",
                "type": ""
              }
            ],
            "src": "14951:320:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15383:125:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "15405:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15413:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15401:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15401:14:3"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15417:34:3",
                        "type": "",
                        "value": "ERC721: approved query for nonex"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15394:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15394:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15394:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "15473:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15481:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15469:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15469:15:3"
                      },
                      {
                        "hexValue": "697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15486:14:3",
                        "type": "",
                        "value": "istent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15462:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15462:39:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15462:39:3"
                }
              ]
            },
            "name": "store_literal_in_memory_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "15375:6:3",
                "type": ""
              }
            ],
            "src": "15277:231:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15660:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "15670:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "15736:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15741:2:3",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "15677:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15677:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "15670:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "15842:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                      "nodeType": "YulIdentifier",
                      "src": "15753:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15753:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15753:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15855:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "15866:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15871:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15862:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15862:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "15855:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "15648:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "15656:3:3",
                "type": ""
              }
            ],
            "src": "15514:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16057:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16067:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16079:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16090:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16075:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16075:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16067:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16114:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16125:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16110:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16110:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "16133:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16139:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16129:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16129:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16103:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16103:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16103:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16159:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "16293:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16167:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16167:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16159:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16037:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16052:4:3",
                "type": ""
              }
            ],
            "src": "15886:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16417:137:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "16439:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16447:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16435:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16435:14:3"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "16451:34:3",
                        "type": "",
                        "value": "ERC721: approve caller is not ow"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16428:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16428:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16428:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "16507:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16515:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16503:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16503:15:3"
                      },
                      {
                        "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "16520:26:3",
                        "type": "",
                        "value": "ner nor approved for all"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16496:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16496:51:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16496:51:3"
                }
              ]
            },
            "name": "store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "16409:6:3",
                "type": ""
              }
            ],
            "src": "16311:243:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16706:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16716:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16782:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16787:2:3",
                        "type": "",
                        "value": "56"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16723:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16723:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "16716:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16888:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                      "nodeType": "YulIdentifier",
                      "src": "16799:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16799:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16799:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16901:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16912:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16917:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16908:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16908:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "16901:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "16694:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16702:3:3",
                "type": ""
              }
            ],
            "src": "16560:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17103:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17113:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17125:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17136:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17121:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17121:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17113:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17160:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17171:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17156:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17156:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "17179:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17185:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17175:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17175:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17149:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17149:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17149:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17205:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "17339:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17213:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17213:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17205:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17083:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17098:4:3",
                "type": ""
              }
            ],
            "src": "16932:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17463:116:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "17485:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17493:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17481:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17481:14:3"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f20746865207a65726f2061646472",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17497:34:3",
                        "type": "",
                        "value": "ERC721: approve to the zero addr"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17474:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17474:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17474:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "17553:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17561:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17549:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17549:15:3"
                      },
                      {
                        "hexValue": "657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17566:5:3",
                        "type": "",
                        "value": "ess"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17542:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17542:30:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17542:30:3"
                }
              ]
            },
            "name": "store_literal_in_memory_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "17455:6:3",
                "type": ""
              }
            ],
            "src": "17357:222:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17731:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17741:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17807:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17812:2:3",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17748:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17748:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "17741:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17913:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
                      "nodeType": "YulIdentifier",
                      "src": "17824:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17824:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17824:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17926:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17937:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17942:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17933:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17933:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "17926:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "17719:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "17727:3:3",
                "type": ""
              }
            ],
            "src": "17585:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18128:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18138:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18150:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18161:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18146:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18146:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18138:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18185:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18196:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18181:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18181:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "18204:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18210:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "18200:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18200:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18174:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18174:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18174:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18230:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "18364:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "18238:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18238:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18230:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18108:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18123:4:3",
                "type": ""
              }
            ],
            "src": "17957:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18488:69:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "18510:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18518:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18506:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18506:14:3"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18522:27:3",
                        "type": "",
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18499:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18499:51:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18499:51:3"
                }
              ]
            },
            "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "18480:6:3",
                "type": ""
              }
            ],
            "src": "18382:175:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18709:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18719:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "18785:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18790:2:3",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "18726:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18726:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "18719:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "18891:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                      "nodeType": "YulIdentifier",
                      "src": "18802:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18802:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18802:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18904:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "18915:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18920:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18911:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18911:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "18904:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "18697:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "18705:3:3",
                "type": ""
              }
            ],
            "src": "18563:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19106:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19116:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19128:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19139:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19124:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19124:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19116:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19163:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19174:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19159:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19159:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "19182:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19188:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "19178:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19178:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19152:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19152:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19152:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19208:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "19342:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "19216:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19216:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19208:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19086:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19101:4:3",
                "type": ""
              }
            ],
            "src": "18935:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19466:75:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "19488:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19496:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19484:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19484:14:3"
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19500:33:3",
                        "type": "",
                        "value": "ERC721: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19477:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19477:57:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19477:57:3"
                }
              ]
            },
            "name": "store_literal_in_memory_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "19458:6:3",
                "type": ""
              }
            ],
            "src": "19360:181:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19693:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19703:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "19769:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19774:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "19710:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19710:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "19703:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "19875:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072",
                      "nodeType": "YulIdentifier",
                      "src": "19786:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19786:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19786:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19888:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "19899:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19904:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19895:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19895:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "19888:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "19681:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "19689:3:3",
                "type": ""
              }
            ],
            "src": "19547:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20090:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20100:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20112:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20123:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20108:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20108:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20100:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20147:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20158:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20143:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20143:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "20166:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20172:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "20162:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20162:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20136:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20136:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20136:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20192:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "20326:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "20200:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20200:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20192:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20070:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20085:4:3",
                "type": ""
              }
            ],
            "src": "19919:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20450:70:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "20472:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20480:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20468:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20468:14:3"
                      },
                      {
                        "hexValue": "6f6e6c79206f776e65722063616e207365742062617365555249",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20484:28:3",
                        "type": "",
                        "value": "only owner can set baseURI"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20461:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20461:52:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20461:52:3"
                }
              ]
            },
            "name": "store_literal_in_memory_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "20442:6:3",
                "type": ""
              }
            ],
            "src": "20344:176:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20672:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20682:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "20748:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20753:2:3",
                        "type": "",
                        "value": "26"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "20689:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20689:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "20682:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "20854:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8",
                      "nodeType": "YulIdentifier",
                      "src": "20765:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20765:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20765:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20867:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "20878:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20883:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20874:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20874:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "20867:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "20660:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "20668:3:3",
                "type": ""
              }
            ],
            "src": "20526:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21069:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21079:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21091:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21102:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21087:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21087:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21079:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21126:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21137:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21122:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21122:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "21145:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21151:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "21141:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21141:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21115:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21115:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21115:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21171:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "21305:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "21179:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21179:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21171:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21049:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21064:4:3",
                "type": ""
              }
            ],
            "src": "20898:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21377:87:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21387:11:3",
                  "value": {
                    "name": "ptr",
                    "nodeType": "YulIdentifier",
                    "src": "21395:3:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "21387:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21415:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "21418:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21408:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21408:14:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21408:14:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21431:26:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21449:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21452:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "21439:9:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21439:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "21431:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "21364:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "21372:4:3",
                "type": ""
              }
            ],
            "src": "21323:141:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21514:49:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21524:33:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "21542:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21549:2:3",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21538:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21538:14:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21554:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "21534:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21534:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "21524:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "divide_by_32_ceil",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "21497:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "21507:6:3",
                "type": ""
              }
            ],
            "src": "21470:93:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21622:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21632:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "bits",
                        "nodeType": "YulIdentifier",
                        "src": "21657:4:3"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "21663:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "21653:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21653:16:3"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "21632:8:3"
                    }
                  ]
                }
              ]
            },
            "name": "shift_left_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "bits",
                "nodeType": "YulTypedName",
                "src": "21597:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "21603:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "21613:8:3",
                "type": ""
              }
            ],
            "src": "21569:107:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21758:317:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21768:35:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBytes",
                        "nodeType": "YulIdentifier",
                        "src": "21789:10:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21801:1:3",
                        "type": "",
                        "value": "8"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "21785:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21785:18:3"
                  },
                  "variables": [
                    {
                      "name": "shiftBits",
                      "nodeType": "YulTypedName",
                      "src": "21772:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21812:109:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBits",
                        "nodeType": "YulIdentifier",
                        "src": "21843:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21854:66:3",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "shift_left_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "21824:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21824:97:3"
                  },
                  "variables": [
                    {
                      "name": "mask",
                      "nodeType": "YulTypedName",
                      "src": "21816:4:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21930:51:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "shiftBits",
                        "nodeType": "YulIdentifier",
                        "src": "21961:9:3"
                      },
                      {
                        "name": "toInsert",
                        "nodeType": "YulIdentifier",
                        "src": "21972:8:3"
                      }
                    ],
                    "functionName": {
                      "name": "shift_left_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "21942:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21942:39:3"
                  },
                  "variableNames": [
                    {
                      "name": "toInsert",
                      "nodeType": "YulIdentifier",
                      "src": "21930:8:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21990:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "22003:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "mask",
                            "nodeType": "YulIdentifier",
                            "src": "22014:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "22010:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22010:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "21999:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21999:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "21990:5:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22029:40:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "22042:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "toInsert",
                            "nodeType": "YulIdentifier",
                            "src": "22053:8:3"
                          },
                          {
                            "name": "mask",
                            "nodeType": "YulIdentifier",
                            "src": "22063:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "22049:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22049:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "22039:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22039:30:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "22029:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "update_byte_slice_dynamic32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "21719:5:3",
                "type": ""
              },
              {
                "name": "shiftBytes",
                "nodeType": "YulTypedName",
                "src": "21726:10:3",
                "type": ""
              },
              {
                "name": "toInsert",
                "nodeType": "YulTypedName",
                "src": "21738:8:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "21751:6:3",
                "type": ""
              }
            ],
            "src": "21682:393:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22113:28:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22123:12:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "22130:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "22123:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "identity",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "22099:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "22109:3:3",
                "type": ""
              }
            ],
            "src": "22081:60:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22207:82:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22217:66:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "22275:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "22257:17:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22257:24:3"
                          }
                        ],
                        "functionName": {
                          "name": "identity",
                          "nodeType": "YulIdentifier",
                          "src": "22248:8:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22248:34:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "22230:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22230:53:3"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "22217:9:3"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_uint256_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "22187:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "22197:9:3",
                "type": ""
              }
            ],
            "src": "22147:142:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22342:28:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22352:12:3",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "22359:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "22352:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "prepare_store_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "22328:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "22338:3:3",
                "type": ""
              }
            ],
            "src": "22295:75:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22452:193:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22462:63:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_0",
                        "nodeType": "YulIdentifier",
                        "src": "22517:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "convert_t_uint256_to_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "22486:30:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22486:39:3"
                  },
                  "variables": [
                    {
                      "name": "convertedValue_0",
                      "nodeType": "YulTypedName",
                      "src": "22466:16:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "22541:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "22581:4:3"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "22575:5:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22575:11:3"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "22588:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "convertedValue_0",
                                "nodeType": "YulIdentifier",
                                "src": "22620:16:3"
                              }
                            ],
                            "functionName": {
                              "name": "prepare_store_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "22596:23:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22596:41:3"
                          }
                        ],
                        "functionName": {
                          "name": "update_byte_slice_dynamic32",
                          "nodeType": "YulIdentifier",
                          "src": "22547:27:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22547:91:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nodeType": "YulIdentifier",
                      "src": "22534:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22534:105:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22534:105:3"
                }
              ]
            },
            "name": "update_storage_value_t_uint256_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "22429:4:3",
                "type": ""
              },
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "22435:6:3",
                "type": ""
              },
              {
                "name": "value_0",
                "nodeType": "YulTypedName",
                "src": "22443:7:3",
                "type": ""
              }
            ],
            "src": "22376:269:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22700:24:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22710:8:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "22717:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "22710:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "zero_value_for_split_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "22696:3:3",
                "type": ""
              }
            ],
            "src": "22651:73:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22783:136:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22793:46:3",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "zero_value_for_split_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "22807:30:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22807:32:3"
                  },
                  "variables": [
                    {
                      "name": "zero_0",
                      "nodeType": "YulTypedName",
                      "src": "22797:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "22892:4:3"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "22898:6:3"
                      },
                      {
                        "name": "zero_0",
                        "nodeType": "YulIdentifier",
                        "src": "22906:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_t_uint256_to_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "22848:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22848:65:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22848:65:3"
                }
              ]
            },
            "name": "storage_set_to_zero_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "22769:4:3",
                "type": ""
              },
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "22775:6:3",
                "type": ""
              }
            ],
            "src": "22730:189:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22975:136:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "23042:63:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "23086:5:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "23093:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "storage_set_to_zero_t_uint256",
                            "nodeType": "YulIdentifier",
                            "src": "23056:29:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23056:39:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "23056:39:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "start",
                        "nodeType": "YulIdentifier",
                        "src": "22995:5:3"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "23002:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "22992:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22992:14:3"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "23007:26:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "23009:22:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "23022:5:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "23029:1:3",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "23018:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23018:13:3"
                        },
                        "variableNames": [
                          {
                            "name": "start",
                            "nodeType": "YulIdentifier",
                            "src": "23009:5:3"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "22989:2:3",
                    "statements": []
                  },
                  "src": "22985:120:3"
                }
              ]
            },
            "name": "clear_storage_range_t_bytes1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nodeType": "YulTypedName",
                "src": "22963:5:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "22970:3:3",
                "type": ""
              }
            ],
            "src": "22925:186:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23196:464:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "23222:431:3",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "23236:54:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "23284:5:3"
                            }
                          ],
                          "functionName": {
                            "name": "array_dataslot_t_string_storage",
                            "nodeType": "YulIdentifier",
                            "src": "23252:31:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23252:38:3"
                        },
                        "variables": [
                          {
                            "name": "dataArea",
                            "nodeType": "YulTypedName",
                            "src": "23240:8:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "23303:63:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "dataArea",
                              "nodeType": "YulIdentifier",
                              "src": "23326:8:3"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "startIndex",
                                  "nodeType": "YulIdentifier",
                                  "src": "23354:10:3"
                                }
                              ],
                              "functionName": {
                                "name": "divide_by_32_ceil",
                                "nodeType": "YulIdentifier",
                                "src": "23336:17:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "23336:29:3"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "23322:3:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23322:44:3"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "23307:11:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23523:27:3",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23525:23:3",
                              "value": {
                                "name": "dataArea",
                                "nodeType": "YulIdentifier",
                                "src": "23540:8:3"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "23525:11:3"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "23507:10:3"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "23519:2:3",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "23504:2:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23504:18:3"
                        },
                        "nodeType": "YulIf",
                        "src": "23501:49:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "deleteStart",
                              "nodeType": "YulIdentifier",
                              "src": "23592:11:3"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "dataArea",
                                  "nodeType": "YulIdentifier",
                                  "src": "23609:8:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "23637:3:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "divide_by_32_ceil",
                                    "nodeType": "YulIdentifier",
                                    "src": "23619:17:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "23619:22:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "23605:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "23605:37:3"
                            }
                          ],
                          "functionName": {
                            "name": "clear_storage_range_t_bytes1",
                            "nodeType": "YulIdentifier",
                            "src": "23563:28:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23563:80:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "23563:80:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "23213:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23218:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "23210:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23210:11:3"
                  },
                  "nodeType": "YulIf",
                  "src": "23207:446:3"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "23172:5:3",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "23179:3:3",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "23184:10:3",
                "type": ""
              }
            ],
            "src": "23117:543:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23729:54:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23739:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "bits",
                        "nodeType": "YulIdentifier",
                        "src": "23764:4:3"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "23770:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "23760:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23760:16:3"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "23739:8:3"
                    }
                  ]
                }
              ]
            },
            "name": "shift_right_unsigned_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "bits",
                "nodeType": "YulTypedName",
                "src": "23704:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "23710:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "23720:8:3",
                "type": ""
              }
            ],
            "src": "23666:117:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23840:118:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "23850:68:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23899:1:3",
                                "type": "",
                                "value": "8"
                              },
                              {
                                "name": "bytes",
                                "nodeType": "YulIdentifier",
                                "src": "23902:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nodeType": "YulIdentifier",
                              "src": "23895:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "23895:13:3"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23914:1:3",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "23910:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "23910:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "shift_right_unsigned_dynamic",
                          "nodeType": "YulIdentifier",
                          "src": "23866:28:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23866:51:3"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "23862:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23862:56:3"
                  },
                  "variables": [
                    {
                      "name": "mask",
                      "nodeType": "YulTypedName",
                      "src": "23854:4:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23927:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "23941:4:3"
                      },
                      {
                        "name": "mask",
                        "nodeType": "YulIdentifier",
                        "src": "23947:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "23937:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23937:15:3"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "23927:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "mask_bytes_dynamic",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "23817:4:3",
                "type": ""
              },
              {
                "name": "bytes",
                "nodeType": "YulTypedName",
                "src": "23823:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "23833:6:3",
                "type": ""
              }
            ],
            "src": "23789:169:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24044:214:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "24177:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "24204:4:3"
                      },
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "24210:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "mask_bytes_dynamic",
                      "nodeType": "YulIdentifier",
                      "src": "24185:18:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24185:29:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "24177:4:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24223:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "24234:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24244:1:3",
                            "type": "",
                            "value": "2"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "24247:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "mul",
                          "nodeType": "YulIdentifier",
                          "src": "24240:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24240:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "24231:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24231:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "24223:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "24025:4:3",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "24031:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "24039:4:3",
                "type": ""
              }
            ],
            "src": "23963:295:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24355:1303:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "24366:51:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "24413:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "24380:32:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24380:37:3"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "24370:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "24502:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "24504:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "24504:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "24504:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "24474:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24482:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "24471:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24471:30:3"
                  },
                  "nodeType": "YulIf",
                  "src": "24468:56:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "24534:52:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nodeType": "YulIdentifier",
                            "src": "24580:4:3"
                          }
                        ],
                        "functionName": {
                          "name": "sload",
                          "nodeType": "YulIdentifier",
                          "src": "24574:5:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24574:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "24548:25:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24548:38:3"
                  },
                  "variables": [
                    {
                      "name": "oldLen",
                      "nodeType": "YulTypedName",
                      "src": "24538:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "24679:4:3"
                      },
                      {
                        "name": "oldLen",
                        "nodeType": "YulIdentifier",
                        "src": "24685:6:3"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "24693:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_t_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "24633:45:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24633:67:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24633:67:3"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "24710:18:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "24727:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "24714:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24738:17:3",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "24751:4:3",
                    "type": "",
                    "value": "0x20"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "24738:9:3"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "24802:611:3",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "24816:37:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "24835:6:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "24847:4:3",
                                      "type": "",
                                      "value": "0x1f"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "24843:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "24843:9:3"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "24831:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "24831:22:3"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "24820:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "24867:51:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "24913:4:3"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_t_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "24881:31:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "24881:37:3"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "24871:6:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "24931:10:3",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "24940:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "24935:1:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "24999:163:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "25024:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "25042:3:3"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "25047:9:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "25038:3:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25038:19:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "25032:5:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25032:26:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "25017:6:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25017:42:3"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "25017:42:3"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "25076:24:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "25090:6:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25098:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25086:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25086:14:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "25076:6:3"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "25117:31:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "25134:9:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25145:2:3",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25130:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25130:18:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "25117:9:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "24965:1:3"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "24968:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "24962:2:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "24962:14:3"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "24977:21:3",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "24979:17:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "24988:1:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24991:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24984:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24984:12:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "24979:1:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "24958:3:3",
                              "statements": []
                            },
                            "src": "24954:208:3"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "25198:156:3",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "25216:43:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "25243:3:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "25248:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "25239:3:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25239:19:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "25233:5:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25233:26:3"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "25220:9:3",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "25283:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "25310:9:3"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "25325:6:3"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "25333:4:3",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "25321:3:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25321:17:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mask_bytes_dynamic",
                                          "nodeType": "YulIdentifier",
                                          "src": "25291:18:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25291:48:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "25276:6:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25276:64:3"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "25276:64:3"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "25181:7:3"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "25190:6:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "25178:2:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25178:19:3"
                            },
                            "nodeType": "YulIf",
                            "src": "25175:179:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "25374:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "25388:6:3"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25396:1:3",
                                          "type": "",
                                          "value": "2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "25384:3:3"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25384:14:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "25400:1:3",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "25380:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "25380:22:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "25367:6:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25367:36:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "25367:36:3"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "24795:618:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24800:1:3",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "25430:222:3",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "25444:14:3",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "25457:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "25448:5:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "25481:67:3",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "25499:35:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "25518:3:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "25523:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "25514:3:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25514:19:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "25508:5:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25508:26:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "25499:5:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "25474:6:3"
                            },
                            "nodeType": "YulIf",
                            "src": "25471:77:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "25568:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "25627:5:3"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "25634:6:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:52:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "25574:67:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "25561:6:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25561:81:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "25561:81:3"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "25422:230:3",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "24775:6:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24783:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "24772:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24772:14:3"
                  },
                  "nodeType": "YulSwitch",
                  "src": "24765:887:3"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "24344:4:3",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "24350:3:3",
                "type": ""
              }
            ],
            "src": "24263:1395:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25770:123:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "25792:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25800:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25788:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25788:14:3"
                      },
                      {
                        "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25804:34:3",
                        "type": "",
                        "value": "ERC721: balance query for the ze"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25781:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25781:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25781:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "25860:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25868:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25856:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25856:15:3"
                      },
                      {
                        "hexValue": "726f2061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25873:12:3",
                        "type": "",
                        "value": "ro address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25849:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25849:37:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25849:37:3"
                }
              ]
            },
            "name": "store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "25762:6:3",
                "type": ""
              }
            ],
            "src": "25664:229:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26045:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26055:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "26121:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26126:2:3",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "26062:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26062:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "26055:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "26227:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                      "nodeType": "YulIdentifier",
                      "src": "26138:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26138:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26138:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26240:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "26251:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26256:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26247:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26247:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "26240:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "26033:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "26041:3:3",
                "type": ""
              }
            ],
            "src": "25899:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26442:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26452:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26464:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26475:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26460:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26460:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26452:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26499:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26510:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26495:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26495:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "26518:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26524:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "26514:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26514:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26488:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26488:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26488:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26544:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "26678:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "26552:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26552:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26544:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "26422:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "26437:4:3",
                "type": ""
              }
            ],
            "src": "26271:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26802:128:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "26824:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26832:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26820:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26820:14:3"
                      },
                      {
                        "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26836:34:3",
                        "type": "",
                        "value": "ERC721Metadata: URI query for no"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26813:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26813:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26813:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "26892:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26900:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26888:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26888:15:3"
                      },
                      {
                        "hexValue": "6e6578697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26905:17:3",
                        "type": "",
                        "value": "nexistent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26881:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26881:42:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26881:42:3"
                }
              ]
            },
            "name": "store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "26794:6:3",
                "type": ""
              }
            ],
            "src": "26696:234:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27082:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "27092:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "27158:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27163:2:3",
                        "type": "",
                        "value": "47"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "27099:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27099:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "27092:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "27264:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                      "nodeType": "YulIdentifier",
                      "src": "27175:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27175:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27175:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27277:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "27288:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27293:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27284:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27284:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "27277:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "27070:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "27078:3:3",
                "type": ""
              }
            ],
            "src": "26936:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27479:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "27489:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27501:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27512:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27497:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27497:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "27489:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27536:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27547:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27532:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27532:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "27555:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27561:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "27551:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27551:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27525:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27525:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27525:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27581:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "27715:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "27589:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27589:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "27581:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "27459:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "27474:4:3",
                "type": ""
              }
            ],
            "src": "27308:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27847:34:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "27857:18:3",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "27872:3:3"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "27857:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "27819:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "27824:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "27835:11:3",
                "type": ""
              }
            ],
            "src": "27733:148:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28018:767:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28028:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "28051:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nodeType": "YulIdentifier",
                      "src": "28045:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28045:12:3"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nodeType": "YulTypedName",
                      "src": "28032:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28066:50:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "28106:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "28080:25:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28080:36:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "28070:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28125:96:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "28209:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "28214:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "28132:76:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28132:89:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "28125:3:3"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "28270:159:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "28323:3:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nodeType": "YulIdentifier",
                                      "src": "28332:9:3"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28347:4:3",
                                          "type": "",
                                          "value": "0xff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nodeType": "YulIdentifier",
                                        "src": "28343:3:3"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28343:9:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "28328:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "28328:25:3"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "28316:6:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28316:38:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "28316:38:3"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "28367:52:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "28378:3:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "28387:6:3"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "28409:6:3"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "28402:6:3"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "28402:14:3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "28395:6:3"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28395:22:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mul",
                                    "nodeType": "YulIdentifier",
                                    "src": "28383:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "28383:35:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "28374:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28374:45:3"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "28367:3:3"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "28263:166:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28268:1:3",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "28445:334:3",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "28490:53:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "28537:5:3"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_t_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "28505:31:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28505:38:3"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nodeType": "YulTypedName",
                                "src": "28494:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "28556:10:3",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28565:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "28560:1:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "28623:110:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "28652:3:3"
                                          },
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "28657:1:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28648:3:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28648:11:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulIdentifier",
                                            "src": "28667:7:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "28661:5:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28661:14:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "28641:6:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28641:35:3"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "28641:35:3"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "28693:26:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nodeType": "YulIdentifier",
                                        "src": "28708:7:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28717:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28704:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28704:15:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nodeType": "YulIdentifier",
                                      "src": "28693:7:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "28590:1:3"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "28593:6:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "28587:2:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28587:13:3"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "28601:21:3",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "28603:17:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "28612:1:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28615:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28608:3:3"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28608:12:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "28603:1:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "28583:3:3",
                              "statements": []
                            },
                            "src": "28579:154:3"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "28746:23:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "28757:3:3"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "28762:6:3"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "28753:3:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28753:16:3"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "28746:3:3"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "28438:341:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28443:1:3",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "28241:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28252:1:3",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "28237:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28237:17:3"
                  },
                  "nodeType": "YulSwitch",
                  "src": "28230:549:3"
                }
              ]
            },
            "name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27999:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "28006:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "28014:3:3",
                "type": ""
              }
            ],
            "src": "27911:874:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28969:245:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "28980:99:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "29066:6:3"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "29075:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "28987:78:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28987:92:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "28980:3:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29089:99:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "29175:6:3"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "29184:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "29096:78:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29096:92:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "29089:3:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29198:10:3",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "29205:3:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "29198:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "28940:3:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "28946:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "28954:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "28965:3:3",
                "type": ""
              }
            ],
            "src": "28791:423:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29326:125:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "29348:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29356:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29344:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29344:14:3"
                      },
                      {
                        "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "29360:34:3",
                        "type": "",
                        "value": "ERC721: operator query for nonex"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29337:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29337:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29337:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "29416:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29424:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29412:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29412:15:3"
                      },
                      {
                        "hexValue": "697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "29429:14:3",
                        "type": "",
                        "value": "istent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29405:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29405:39:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29405:39:3"
                }
              ]
            },
            "name": "store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "29318:6:3",
                "type": ""
              }
            ],
            "src": "29220:231:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29603:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "29613:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "29679:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29684:2:3",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "29620:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29620:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "29613:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "29785:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                      "nodeType": "YulIdentifier",
                      "src": "29696:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29696:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29696:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29798:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "29809:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29814:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29805:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29805:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "29798:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "29591:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "29599:3:3",
                "type": ""
              }
            ],
            "src": "29457:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "30000:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "30010:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "30022:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30033:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "30018:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30018:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "30010:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "30057:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30068:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "30053:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30053:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "30076:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "30082:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "30072:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30072:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "30046:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30046:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30046:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "30102:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "30236:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "30110:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30110:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "30102:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "29980:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "29995:4:3",
                "type": ""
              }
            ],
            "src": "29829:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "30360:122:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "30382:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30390:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "30378:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30378:14:3"
                      },
                      {
                        "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e20746861742069",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "30394:34:3",
                        "type": "",
                        "value": "ERC721: transfer of token that i"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "30371:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30371:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30371:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "30450:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30458:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "30446:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30446:15:3"
                      },
                      {
                        "hexValue": "73206e6f74206f776e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "30463:11:3",
                        "type": "",
                        "value": "s not own"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "30439:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30439:36:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30439:36:3"
                }
              ]
            },
            "name": "store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "30352:6:3",
                "type": ""
              }
            ],
            "src": "30254:228:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "30634:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "30644:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "30710:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30715:2:3",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "30651:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30651:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "30644:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "30816:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
                      "nodeType": "YulIdentifier",
                      "src": "30727:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30727:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30727:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "30829:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "30840:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30845:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "30836:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30836:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "30829:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "30622:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "30630:3:3",
                "type": ""
              }
            ],
            "src": "30488:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31031:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "31041:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "31053:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31064:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "31049:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31049:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "31041:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "31088:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31099:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "31084:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31084:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "31107:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "31113:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "31103:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31103:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31077:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31077:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31077:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "31133:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "31267:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "31141:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31141:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "31133:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "31011:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "31026:4:3",
                "type": ""
              }
            ],
            "src": "30860:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31391:117:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "31413:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31421:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "31409:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31409:14:3"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "31425:34:3",
                        "type": "",
                        "value": "ERC721: transfer to the zero add"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31402:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31402:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31402:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "31481:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "31489:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "31477:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "31477:15:3"
                      },
                      {
                        "hexValue": "72657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "31494:6:3",
                        "type": "",
                        "value": "ress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "31470:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31470:31:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31470:31:3"
                }
              ]
            },
            "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "31383:6:3",
                "type": ""
              }
            ],
            "src": "31285:223:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "31660:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "31670:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "31736:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31741:2:3",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "31677:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31677:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "31670:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "31842:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                      "nodeType": "YulIdentifier",
                      "src": "31753:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31753:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "31753:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "31855:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "31866:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "31871:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "31862:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "31862:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "31855:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "31648:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "31656:3:3",
                "type": ""
              }
            ],
            "src": "31514:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32057:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "32067:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "32079:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32090:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "32075:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32075:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "32067:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32114:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32125:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32110:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32110:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "32133:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "32139:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "32129:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32129:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32103:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32103:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32103:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "32159:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "32293:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "32167:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32167:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "32159:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "32037:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "32052:4:3",
                "type": ""
              }
            ],
            "src": "31886:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32417:138:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "32439:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32447:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32435:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32435:14:3"
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "32451:34:3",
                        "type": "",
                        "value": "ERC721: transfer caller is not o"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32428:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32428:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32428:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "32507:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "32515:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "32503:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "32503:15:3"
                      },
                      {
                        "hexValue": "776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "32520:27:3",
                        "type": "",
                        "value": "wner nor approved for all"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "32496:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32496:52:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32496:52:3"
                }
              ]
            },
            "name": "store_literal_in_memory_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "32409:6:3",
                "type": ""
              }
            ],
            "src": "32311:244:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "32707:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "32717:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "32783:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32788:2:3",
                        "type": "",
                        "value": "57"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "32724:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32724:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "32717:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "32889:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8",
                      "nodeType": "YulIdentifier",
                      "src": "32800:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32800:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "32800:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "32902:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "32913:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "32918:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "32909:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "32909:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "32902:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "32695:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "32703:3:3",
                "type": ""
              }
            ],
            "src": "32561:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33104:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "33114:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "33126:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33137:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "33122:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33122:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "33114:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33161:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33172:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33157:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33157:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "33180:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "33186:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "33176:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33176:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33150:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33150:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33150:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "33206:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "33340:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "33214:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33214:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "33206:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "33084:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "33099:4:3",
                "type": ""
              }
            ],
            "src": "32933:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33464:131:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "33486:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33494:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33482:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33482:14:3"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "33498:34:3",
                        "type": "",
                        "value": "ERC721: transfer to non ERC721Re"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33475:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33475:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33475:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "33554:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "33562:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "33550:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "33550:15:3"
                      },
                      {
                        "hexValue": "63656976657220696d706c656d656e746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "33567:20:3",
                        "type": "",
                        "value": "ceiver implementer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "33543:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33543:45:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33543:45:3"
                }
              ]
            },
            "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "33456:6:3",
                "type": ""
              }
            ],
            "src": "33358:237:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "33747:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "33757:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "33823:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33828:2:3",
                        "type": "",
                        "value": "50"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "33764:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33764:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "33757:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "33929:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                      "nodeType": "YulIdentifier",
                      "src": "33840:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33840:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "33840:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "33942:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "33953:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "33958:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "33949:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "33949:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "33942:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "33735:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "33743:3:3",
                "type": ""
              }
            ],
            "src": "33601:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "34144:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "34154:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "34166:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "34177:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34162:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34162:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "34154:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "34201:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "34212:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "34197:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34197:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "34220:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "34226:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "34216:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34216:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "34190:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34190:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "34190:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "34246:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "34380:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "34254:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34254:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "34246:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "34124:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "34139:4:3",
                "type": ""
              }
            ],
            "src": "33973:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "34504:122:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "34526:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "34534:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "34522:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34522:14:3"
                      },
                      {
                        "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "34538:34:3",
                        "type": "",
                        "value": "ERC721: owner query for nonexist"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "34515:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34515:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "34515:58:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "34594:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "34602:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "34590:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "34590:15:3"
                      },
                      {
                        "hexValue": "656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "34607:11:3",
                        "type": "",
                        "value": "ent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "34583:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34583:36:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "34583:36:3"
                }
              ]
            },
            "name": "store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "34496:6:3",
                "type": ""
              }
            ],
            "src": "34398:228:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "34778:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "34788:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "34854:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "34859:2:3",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "34795:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34795:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "34788:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "34960:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                      "nodeType": "YulIdentifier",
                      "src": "34871:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34871:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "34871:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "34973:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "34984:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "34989:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "34980:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "34980:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "34973:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "34766:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "34774:3:3",
                "type": ""
              }
            ],
            "src": "34632:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "35175:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "35185:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "35197:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "35208:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "35193:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35193:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "35185:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "35232:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "35243:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "35228:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35228:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "35251:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "35257:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "35247:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35247:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "35221:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35221:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "35221:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "35277:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "35411:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "35285:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35285:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "35277:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "35155:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "35170:4:3",
                "type": ""
              }
            ],
            "src": "35004:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "35535:76:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "35557:6:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "35565:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "35553:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "35553:14:3"
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "35569:34:3",
                        "type": "",
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "35546:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35546:58:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "35546:58:3"
                }
              ]
            },
            "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "35527:6:3",
                "type": ""
              }
            ],
            "src": "35429:182:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "35763:220:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "35773:74:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "35839:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "35844:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "35780:58:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35780:67:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "35773:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "35945:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                      "nodeType": "YulIdentifier",
                      "src": "35856:88:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35856:93:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "35856:93:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "35958:19:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "35969:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "35974:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "35965:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "35965:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "35958:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "35751:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "35759:3:3",
                "type": ""
              }
            ],
            "src": "35617:366:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36160:248:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "36170:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "36182:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36193:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "36178:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36178:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "36170:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "36217:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "36228:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "36213:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "36213:17:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "36236:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "36242:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "36232:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "36232:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "36206:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36206:47:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "36206:47:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "36262:139:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "36396:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "36270:124:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36270:131:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "36262:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "36140:9:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "36155:4:3",
                "type": ""
              }
            ],
            "src": "35989:419:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36442:152:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36459:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36462:77:3",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "36452:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36452:88:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "36452:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36556:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36559:4:3",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "36549:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36549:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "36549:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36580:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "36583:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "36573:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36573:15:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "36573:15:3"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "36414:180:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36644:147:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "36654:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36677:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "36659:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36659:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "x",
                      "nodeType": "YulIdentifier",
                      "src": "36654:1:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "36688:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "36711:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "36693:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36693:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "y",
                      "nodeType": "YulIdentifier",
                      "src": "36688:1:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "36722:16:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36733:1:3"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "36736:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "36729:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36729:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "36722:3:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "36762:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "36764:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "36764:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "36764:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36754:1:3"
                      },
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "36757:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "36751:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36751:10:3"
                  },
                  "nodeType": "YulIf",
                  "src": "36748:36:3"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "36631:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "36634:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "36640:3:3",
                "type": ""
              }
            ],
            "src": "36600:191:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "36842:149:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "36852:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36875:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "36857:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36857:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "x",
                      "nodeType": "YulIdentifier",
                      "src": "36852:1:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "36886:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "36909:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "36891:17:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36891:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "y",
                      "nodeType": "YulIdentifier",
                      "src": "36886:1:3"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "36920:17:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36932:1:3"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "36935:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "36928:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36928:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "36920:4:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "36962:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "36964:16:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "36964:18:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "36964:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nodeType": "YulIdentifier",
                        "src": "36953:4:3"
                      },
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "36959:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "36950:2:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "36950:11:3"
                  },
                  "nodeType": "YulIf",
                  "src": "36947:37:3"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "36828:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "36831:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "36837:4:3",
                "type": ""
              }
            ],
            "src": "36797:194:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37055:40:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "37066:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "37082:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "37076:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37076:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "37066:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "37038:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "37048:6:3",
                "type": ""
              }
            ],
            "src": "36997:98:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37196:73:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37213:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "37218:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "37206:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37206:19:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37206:19:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "37234:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37253:3:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "37258:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "37249:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37249:14:3"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "37234:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "37168:3:3",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "37173:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "37184:11:3",
                "type": ""
              }
            ],
            "src": "37101:168:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37365:283:3",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "37375:52:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "37421:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_bytes_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "37389:31:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37389:38:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "37379:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "37436:77:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37501:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "37506:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "37443:57:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37443:70:3"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "37436:3:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "37561:5:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37568:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37557:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37557:16:3"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37575:3:3"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "37580:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "37522:34:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37522:65:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37522:65:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "37596:46:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "37607:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "37634:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "37612:21:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37612:29:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "37603:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37603:39:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "37596:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "37346:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "37353:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "37361:3:3",
                "type": ""
              }
            ],
            "src": "37275:373:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "37854:440:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "37864:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "37876:9:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "37887:3:3",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "37872:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37872:19:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "37864:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "37945:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "37958:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "37969:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "37954:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "37954:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "37901:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37901:71:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37901:71:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "38026:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38039:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38050:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38035:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38035:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "37982:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "37982:72:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "37982:72:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "38108:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38121:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38132:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38117:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38117:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "38064:43:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38064:72:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38064:72:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38157:9:3"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "38168:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "38153:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38153:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "38177:4:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38183:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "38173:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38173:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "38146:6:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38146:48:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38146:48:3"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "38203:84:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "38273:6:3"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "38282:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "38211:61:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38211:76:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "38203:4:3"
                    }
                  ]
                }
              ]
            },
            "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": "37802:9:3",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "37814:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "37822:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "37830:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "37838:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "37849:4:3",
                "type": ""
              }
            ],
            "src": "37654:640:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "38362:79:3",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "38372:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "38387:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "38381:5:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38381:13:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "38372:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "38429:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "38403:25:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38403:32:3"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "38403:32:3"
                }
              ]
            },
            "name": "abi_decode_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "38340:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "38348:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "38356:5:3",
                "type": ""
              }
            ],
            "src": "38300:141:3"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "38523:273:3",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "38569:83:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                            "nodeType": "YulIdentifier",
                            "src": "38571:77:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "38571:79:3"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "38571:79:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "38544:7:3"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "38553:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "38540:3:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38540:23:3"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38565:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "38536:3:3"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "38536:32:3"
                  },
                  "nodeType": "YulIf",
                  "src": "38533:119:3"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "38662:127:3",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "38677:15:3",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "38691:1:3",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "38681:6:3",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "38706:73:3",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "38751:9:3"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "38762:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "38747:3:3"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "38747:22:3"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "38771:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bytes4_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "38716:30:3"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "38716:63:3"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "38706:6:3"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "38493:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "38504:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "38516:6:3",
                "type": ""
              }
            ],
            "src": "38447:349:3"
          }
        ]
      },
      "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 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 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 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_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 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 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 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_string_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_string_memory_ptr(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_string_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    // string\n    function abi_decode_t_string_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_string_memory_ptr(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n        }\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_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\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, value4 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_string_memory_ptr(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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    // string\n    function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1, value2 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_string_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1, value2 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value3, value4 := abi_decode_t_bytes_calldata_ptr(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_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approved query for nonex\")\n\n        mstore(add(memPtr, 32), \"istent token\")\n\n    }\n\n    function abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n        store_literal_in_memory_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__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_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approve caller is not ow\")\n\n        mstore(add(memPtr, 32), \"ner nor approved for all\")\n\n    }\n\n    function abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 56)\n        store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__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_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: approve to the zero addr\")\n\n        mstore(add(memPtr, 32), \"ess\")\n\n    }\n\n    function abi_encode_t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n        store_literal_in_memory_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4__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_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4_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_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: caller is not the owner\")\n\n    }\n\n    function abi_encode_t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072__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_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8(memPtr) {\n\n        mstore(add(memPtr, 0), \"only owner can set baseURI\")\n\n    }\n\n    function abi_encode_t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n        store_literal_in_memory_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8__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_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8_to_t_string_memory_ptr_fromStack( tail)\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 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    function store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: balance query for the ze\")\n\n        mstore(add(memPtr, 32), \"ro address\")\n\n    }\n\n    function abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n        store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__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_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721Metadata: URI query for no\")\n\n        mstore(add(memPtr, 32), \"nexistent token\")\n\n    }\n\n    function abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n        store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__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_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_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    // string -> string\n    function abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> ret {\n        let slotValue := sload(value)\n        let length := extract_byte_array_length(slotValue)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        switch and(slotValue, 1)\n        case 0 {\n            // short byte array\n            mstore(pos, and(slotValue, not(0xff)))\n            ret := add(pos, mul(length, iszero(iszero(length))))\n        }\n        case 1 {\n            // long byte array\n            let dataPos := array_dataslot_t_string_storage(value)\n            let i := 0\n            for { } lt(i, length) { i := add(i, 0x20) } {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, 1)\n            }\n            ret := add(pos, length)\n        }\n    }\n\n    function abi_encode_tuple_packed_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n        pos := abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        pos := abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1,  pos)\n\n        end := pos\n    }\n\n    function store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: operator query for nonex\")\n\n        mstore(add(memPtr, 32), \"istent token\")\n\n    }\n\n    function abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n        store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__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_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: transfer of token that i\")\n\n        mstore(add(memPtr, 32), \"s not own\")\n\n    }\n\n    function abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n        store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__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_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_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_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: transfer caller is not o\")\n\n        mstore(add(memPtr, 32), \"wner nor approved for all\")\n\n    }\n\n    function abi_encode_t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 57)\n        store_literal_in_memory_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8__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_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8_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 store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC721: owner query for nonexist\")\n\n        mstore(add(memPtr, 32), \"ent token\")\n\n    }\n\n    function abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n        store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__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_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_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 panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\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 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 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": 3,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "107:12722:2:-:0;;;894:1;865:30;;965:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1098:10;1090:5;;:18;;;;;;;;;;;;;;;;;;1126:8;1118:5;:16;;;;;;:::i;:::-;;1154:10;1144:7;:20;;;;;;:::i;:::-;;1185:7;1174:8;:18;;;;;;:::i;:::-;;965:234;;;107:12722;;7:75:3;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:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:246::-;1691:1;1701:113;1715:6;1712:1;1709:13;1701:113;;;1800:1;1795:3;1791:11;1785:18;1781:1;1776:3;1772:11;1765:39;1737:2;1734:1;1730:10;1725:15;;1701:113;;;1848:1;1839:6;1834:3;1830:16;1823:27;1672:184;1610:246;;;:::o;1862:434::-;1951:5;1976:66;1992:49;2034:6;1992:49;:::i;:::-;1976:66;:::i;:::-;1967:75;;2065:6;2058:5;2051:21;2103:4;2096:5;2092:16;2141:3;2132:6;2127:3;2123:16;2120:25;2117:112;;;2148:79;;:::i;:::-;2117:112;2238:52;2283:6;2278:3;2273;2238:52;:::i;:::-;1957:339;1862:434;;;;;:::o;2316:355::-;2383:5;2432:3;2425:4;2417:6;2413:17;2409:27;2399:122;;2440:79;;:::i;:::-;2399:122;2550:6;2544:13;2575:90;2661:3;2653:6;2646:4;2638:6;2634:17;2575:90;:::i;:::-;2566:99;;2389:282;2316:355;;;;:::o;2677:1182::-;2795:6;2803;2811;2860:2;2848:9;2839:7;2835:23;2831:32;2828:119;;;2866:79;;:::i;:::-;2828:119;3007:1;2996:9;2992:17;2986:24;3037:18;3029:6;3026:30;3023:117;;;3059:79;;:::i;:::-;3023:117;3164:74;3230:7;3221:6;3210:9;3206:22;3164:74;:::i;:::-;3154:84;;2957:291;3308:2;3297:9;3293:18;3287:25;3339:18;3331:6;3328:30;3325:117;;;3361:79;;:::i;:::-;3325:117;3466:74;3532:7;3523:6;3512:9;3508:22;3466:74;:::i;:::-;3456:84;;3258:292;3610:2;3599:9;3595:18;3589:25;3641:18;3633:6;3630:30;3627:117;;;3663:79;;:::i;:::-;3627:117;3768:74;3834:7;3825:6;3814:9;3810:22;3768:74;:::i;:::-;3758:84;;3560:292;2677:1182;;;;;:::o;3865:99::-;3917:6;3951:5;3945:12;3935:22;;3865:99;;;:::o;3970:180::-;4018:77;4015:1;4008:88;4115:4;4112:1;4105:15;4139:4;4136:1;4129:15;4156:320;4200:6;4237:1;4231:4;4227:12;4217:22;;4284:1;4278:4;4274:12;4305:18;4295:81;;4361:4;4353:6;4349:17;4339:27;;4295:81;4423:2;4415:6;4412:14;4392:18;4389:38;4386:84;;4442:18;;:::i;:::-;4386:84;4207:269;4156:320;;;:::o;4482:141::-;4531:4;4554:3;4546:11;;4577:3;4574:1;4567:14;4611:4;4608:1;4598:18;4590:26;;4482:141;;;:::o;4629:93::-;4666:6;4713:2;4708;4701:5;4697:14;4693:23;4683:33;;4629:93;;;:::o;4728:107::-;4772:8;4822:5;4816:4;4812:16;4791:37;;4728:107;;;;:::o;4841:393::-;4910:6;4960:1;4948:10;4944:18;4983:97;5013:66;5002:9;4983:97;:::i;:::-;5101:39;5131:8;5120:9;5101:39;:::i;:::-;5089:51;;5173:4;5169:9;5162:5;5158:21;5149:30;;5222:4;5212:8;5208:19;5201:5;5198:30;5188:40;;4917:317;;4841:393;;;;;:::o;5240:77::-;5277:7;5306:5;5295:16;;5240:77;;;:::o;5323:60::-;5351:3;5372:5;5365:12;;5323:60;;;:::o;5389:142::-;5439:9;5472:53;5490:34;5499:24;5517:5;5499:24;:::i;:::-;5490:34;:::i;:::-;5472:53;:::i;:::-;5459:66;;5389:142;;;:::o;5537:75::-;5580:3;5601:5;5594:12;;5537:75;;;:::o;5618:269::-;5728:39;5759:7;5728:39;:::i;:::-;5789:91;5838:41;5862:16;5838:41;:::i;:::-;5830:6;5823:4;5817:11;5789:91;:::i;:::-;5783:4;5776:105;5694:193;5618:269;;;:::o;5893:73::-;5938:3;5893:73;:::o;5972:189::-;6049:32;;:::i;:::-;6090:65;6148:6;6140;6134:4;6090:65;:::i;:::-;6025:136;5972:189;;:::o;6167:186::-;6227:120;6244:3;6237:5;6234:14;6227:120;;;6298:39;6335:1;6328:5;6298:39;:::i;:::-;6271:1;6264:5;6260:13;6251:22;;6227:120;;;6167:186;;:::o;6359:543::-;6460:2;6455:3;6452:11;6449:446;;;6494:38;6526:5;6494:38;:::i;:::-;6578:29;6596:10;6578:29;:::i;:::-;6568:8;6564:44;6761:2;6749:10;6746:18;6743:49;;;6782:8;6767:23;;6743:49;6805:80;6861:22;6879:3;6861:22;:::i;:::-;6851:8;6847:37;6834:11;6805:80;:::i;:::-;6464:431;;6449:446;6359:543;;;:::o;6908:117::-;6962:8;7012:5;7006:4;7002:16;6981:37;;6908:117;;;;:::o;7031:169::-;7075:6;7108:51;7156:1;7152:6;7144:5;7141:1;7137:13;7108:51;:::i;:::-;7104:56;7189:4;7183;7179:15;7169:25;;7082:118;7031:169;;;;:::o;7205:295::-;7281:4;7427:29;7452:3;7446:4;7427:29;:::i;:::-;7419:37;;7489:3;7486:1;7482:11;7476:4;7473:21;7465:29;;7205:295;;;;:::o;7505:1395::-;7622:37;7655:3;7622:37;:::i;:::-;7724:18;7716:6;7713:30;7710:56;;;7746:18;;:::i;:::-;7710:56;7790:38;7822:4;7816:11;7790:38;:::i;:::-;7875:67;7935:6;7927;7921:4;7875:67;:::i;:::-;7969:1;7993:4;7980:17;;8025:2;8017:6;8014:14;8042:1;8037:618;;;;8699:1;8716:6;8713:77;;;8765:9;8760:3;8756:19;8750:26;8741:35;;8713:77;8816:67;8876:6;8869:5;8816:67;:::i;:::-;8810:4;8803:81;8672:222;8007:887;;8037:618;8089:4;8085:9;8077:6;8073:22;8123:37;8155:4;8123:37;:::i;:::-;8182:1;8196:208;8210:7;8207:1;8204:14;8196:208;;;8289:9;8284:3;8280:19;8274:26;8266:6;8259:42;8340:1;8332:6;8328:14;8318:24;;8387:2;8376:9;8372:18;8359:31;;8233:4;8230:1;8226:12;8221:17;;8196:208;;;8432:6;8423:7;8420:19;8417:179;;;8490:9;8485:3;8481:19;8475:26;8533:48;8575:4;8567:6;8563:17;8552:9;8533:48;:::i;:::-;8525:6;8518:64;8440:156;8417:179;8642:1;8638;8630:6;8626:14;8622:22;8616:4;8609:36;8044:611;;;8007:887;;7597:1303;;;7505:1395;;:::o;107:12722:2:-;;;;;;;",
  "deployedSourceMap": "107:12722:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;256:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1598:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4767:391;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3504:1220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;435:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;865:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6378:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;167:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9608:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12388:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1859:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2993:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2675:275;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;587:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1719:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5197:559;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;339:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9857:199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2052:410;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10526:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10735:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:517;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10936:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1252:315;1361:4;1415:25;1400:40;;;:11;:40;;;;:104;;;;1471:33;1456:48;;;:11;:48;;;;1400:104;:160;;;;1535:25;1520:40;;;:11;:40;;;;1400:160;1381:179;;1252:315;;;:::o;256:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1598:90::-;1644:13;1676:5;1669:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1598:90;:::o;4767:391::-;4867:7;4890:18;4911:6;:15;4918:7;4911:15;;;;;;;;;;;;;;;;;;;;;4890:36;;5039:1;5017:24;;:10;:24;;;4996:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;5128:14;:23;5143:7;5128:23;;;;;;;;;;;;;;;;;;;;;5121:30;;;4767:391;;;:::o;3504:1220::-;3576:18;3597:6;:15;3604:7;3597:15;;;;;;;;;;;;;;;;;;;;;3576:36;;3777:10;3763:24;;:10;:24;;;:84;;;;3807:40;3824:10;3836;3807:16;:40::i;:::-;3763:84;3742:187;;;;;;;;;;;;:::i;:::-;;;;;;;;;4028:10;4014:24;;:10;:24;;;3993:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;4189:1;4175:16;;:2;:16;;;4167:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4320:2;4306:16;;:10;:16;;;4298:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4446:32;4463:10;4475:2;4446:16;:32::i;:::-;4445:33;4424:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;4637:2;4611:14;:23;4626:7;4611:23;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4709:7;4705:2;4684:33;;4693:10;4684:33;;;;;;;;;;;;3566:1158;3504:1220;;:::o;435:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;865:30::-;;;;:::o;6378:156::-;6499:28;6509:4;6515:2;6519:7;6499:9;:28::i;:::-;6378:156;;;:::o;167:43::-;;;;;;;;;;;;;;;;;:::o;9608:202::-;9767:36;9781:4;9787:2;9791:7;9767:36;;;;;;;;;;;;:13;:36::i;:::-;9608:202;;;:::o;12388:266::-;12521:17;12530:7;12521:8;:17::i;:::-;12507:31;;:10;:31;;;12486:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12633:14;12639:7;12633:5;:14::i;:::-;12388:266;:::o;1859:153::-;1941:5;;;;;;;;;;;1927:19;;:10;:19;;;1919:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1998:7;1987:8;:18;;;;;;:::i;:::-;;1859:153;:::o;2993:114::-;3057:7;3083:17;3092:7;3083:8;:17::i;:::-;3076:24;;2993:114;;;:::o;2675:275::-;2740:7;2840:1;2822:20;;:6;:20;;;2801:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;2927:8;:16;2936:6;2927:16;;;;;;;;;;;;;;;;2920:23;;2675:275;;;:::o;587:20::-;;;;;;;;;;;;;:::o;1719:94::-;1767:13;1799:7;1792:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1719:94;:::o;5197:559::-;5371:1;5351:22;;:8;:22;;;5343:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5500:10;5488:22;;:8;:22;;;5480:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5639:8;5597:17;:29;5615:10;5597:29;;;;;;;;;;;;;;;:39;5627:8;5597:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;5730:8;5703:46;;5718:10;5703:46;;;5740:8;5703:46;;;;;;:::i;:::-;;;;;;;;5197:559;;:::o;339:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;9857:199::-;10011:38;10025:4;10031:2;10035:7;10044:4;;10011:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:38::i;:::-;9857:199;;;;;:::o;2052:410::-;2165:13;2215:16;2223:7;2215;:16::i;:::-;2194:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2359:1;2340:8;2334:22;;;;;:::i;:::-;;;:26;:121;;;;;;;;;;;;;;;;;2403:8;2413:10;:19;2424:7;2413:19;;;;;;;;;;;2386:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2334:121;2315:140;;2052:410;;;:::o;10526:162::-;10609:7;10661:20;10667:2;10671:9;10661:5;:20::i;:::-;10654:27;;10526:162;;;;:::o;10735:154::-;10824:7;10854:28;10864:2;10868:9;;10854:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:28::i;:::-;10847:35;;10735:154;;;;;:::o;5837:517::-;5959:4;6060:1;6042:20;;:6;:20;;;6021:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6223:1;6203:22;;:8;:22;;;6182:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;6312:17;:25;6330:6;6312:25;;;;;;;;;;;;;;;:35;6338:8;6312:35;;;;;;;;;;;;;;;;;;;;;;;;;6305:42;;5837:517;;;;:::o;10936:187::-;11060:7;11086:30;11096:2;11100:9;;11086:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11111:4;;11086:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:30::i;:::-;11079:37;;10936:187;;;;;;;:::o;6558:1153::-;6669:18;6690:6;:15;6697:7;6690:15;;;;;;;;;;;;;;;;;;;;;6669:36;;6808:4;6794:18;;:10;:18;;;6773:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;6951:1;6937:16;;:2;:16;;;6929:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7214:10;7200:24;;:10;:24;;;:84;;;;7244:40;7261:10;7273;7244:16;:40::i;:::-;7200:84;:141;;;;7331:10;7304:37;;:14;:23;7319:7;7304:23;;;;;;;;;;;;;;;;;;;;;:37;;;7200:141;7179:245;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:23;7478:7;7463:14;:23::i;:::-;7540:31;7557:4;7563:7;7540:16;:31::i;:::-;7603:24;7615:2;7619:7;7603:11;:24::i;:::-;7696:7;7692:2;7677:27;;7686:4;7677:27;;;;;;;;;;;;6659:1052;6558:1153;;;:::o;10106:396::-;10276:28;10286:4;10292:2;10296:7;10276:9;:28::i;:::-;10381:38;10404:4;10410:2;10414:4;10381:22;:38::i;:::-;10360:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;10106:396;;;;:::o;3163:311::-;3221:7;3240:18;3261:6;:15;3268:7;3261:15;;;;;;;;;;;;;;;;;;;;;3240:36;;3371:1;3349:24;;:10;:24;;;3328:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;3457:10;3450:17;;;3163:311;;;:::o;12692:135::-;12771:49;12781:17;12790:7;12781:8;:17::i;:::-;12808:1;12812:7;12771:9;:49::i;:::-;12692:135;:::o;2505:124::-;2570:4;2620:1;2593:29;;:6;:15;2600:7;2593:15;;;;;;;;;;;;;;;;;;;;;:29;;;;2586:36;;2505:124;;;:::o;11161:564::-;11247:7;11332:1;11318:16;;:2;:16;;;11310:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:1;11413:11;;:16;;;;;;;:::i;:::-;;;;;;;;11468:28;11480:2;11484:11;;11468;:28::i;:::-;11571:11;;11567:2;11546:37;;11563:1;11546:37;;;;;;;;;;;;11622:36;11635:11;;11648:9;11622:12;:36::i;:::-;11707:11;;11700:18;;11161:564;;;;:::o;11961:403::-;12085:7;12171:45;12202:1;12206:2;12210:5;12171:22;:45::i;:::-;12150:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;12337:20;12343:2;12347:9;12337:5;:20::i;:::-;12330:27;;11961:403;;;;;:::o;7742:193::-;7870:1;7835:37;;:14;:23;7850:7;7835:23;;;;;;;;;;;;;;;;;;;;;:37;;;7831:98;;7895:14;:23;7910:7;7895:23;;;;;;;;;;;;7888:30;;;;;;;;;;;7831:98;7742:193;:::o;7981:235::-;8119:1;8101:8;:14;8110:4;8101:14;;;;;;;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;8194:6;:15;8201:7;8194:15;;;;;;;;;;;;8187:22;;;;;;;;;;;7981:235;;:::o;8240:225::-;8369:1;8353:8;:12;8362:2;8353:12;;;;;;;;;;;;;;;;:17;;;;;;;:::i;:::-;;;;;;;;8456:2;8438:6;:15;8445:7;8438:15;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;8240:225;;:::o;8513:1048::-;8639:4;8740:1;8722:2;:14;;;:19;8718:61;;8764:4;8757:11;;;;8718:61;8877:2;8861:36;;;8915:10;8943:4;8965:11;;8994:5;8861:152;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8845:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9324:1;9307:6;:13;:18;9303:242;;9345:60;;;;;;;;;;:::i;:::-;;;;;;;;9303:242;9505:6;9499:13;9490:6;9486:2;9482:15;9475:38;8845:710;9149:45;;;9139:55;;;:6;:55;;;;9132:62;;;8513:1048;;;;;;:::o;11768:149::-;11901:9;11879:10;:19;11890:7;11879:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;11768:149;;:::o;7:75:3:-;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:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:126::-;2246:7;2286:42;2279:5;2275:54;2264:65;;2209:126;;;:::o;2341:96::-;2378:7;2407:24;2425:5;2407:24;:::i;:::-;2396:35;;2341:96;;;:::o;2443:118::-;2530:24;2548:5;2530:24;:::i;:::-;2525:3;2518:37;2443:118;;:::o;2567:222::-;2660:4;2698:2;2687:9;2683:18;2675:26;;2711:71;2779:1;2768:9;2764:17;2755:6;2711:71;:::i;:::-;2567:222;;;;:::o;2795:99::-;2847:6;2881:5;2875:12;2865:22;;2795:99;;;:::o;2900:169::-;2984:11;3018:6;3013:3;3006:19;3058:4;3053:3;3049:14;3034:29;;2900:169;;;;:::o;3075:246::-;3156:1;3166:113;3180:6;3177:1;3174:13;3166:113;;;3265:1;3260:3;3256:11;3250:18;3246:1;3241:3;3237:11;3230:39;3202:2;3199:1;3195:10;3190:15;;3166:113;;;3313:1;3304:6;3299:3;3295:16;3288:27;3137:184;3075:246;;;:::o;3327:102::-;3368:6;3419:2;3415:7;3410:2;3403:5;3399:14;3395:28;3385:38;;3327:102;;;:::o;3435:377::-;3523:3;3551:39;3584:5;3551:39;:::i;:::-;3606:71;3670:6;3665:3;3606:71;:::i;:::-;3599:78;;3686:65;3744:6;3739:3;3732:4;3725:5;3721:16;3686:65;:::i;:::-;3776:29;3798:6;3776:29;:::i;:::-;3771:3;3767:39;3760:46;;3527:285;3435:377;;;;:::o;3818:313::-;3931:4;3969:2;3958:9;3954:18;3946:26;;4018:9;4012:4;4008:20;4004:1;3993:9;3989:17;3982:47;4046:78;4119:4;4110:6;4046:78;:::i;:::-;4038:86;;3818:313;;;;:::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:::-;4958:6;4966;5015:2;5003:9;4994:7;4990:23;4986:32;4983:119;;;5021:79;;:::i;:::-;4983:119;5141:1;5166:53;5211:7;5202:6;5191:9;5187:22;5166:53;:::i;:::-;5156:63;;5112:117;5268:2;5294:53;5339:7;5330:6;5319:9;5315:22;5294:53;:::i;:::-;5284:63;;5239:118;4890:474;;;;;:::o;5370:118::-;5457:24;5475:5;5457:24;:::i;:::-;5452:3;5445:37;5370:118;;:::o;5494:222::-;5587:4;5625:2;5614:9;5610:18;5602:26;;5638:71;5706:1;5695:9;5691:17;5682:6;5638:71;:::i;:::-;5494:222;;;;:::o;5722:619::-;5799:6;5807;5815;5864:2;5852:9;5843:7;5839:23;5835:32;5832:119;;;5870:79;;:::i;:::-;5832:119;5990:1;6015:53;6060:7;6051:6;6040:9;6036:22;6015:53;:::i;:::-;6005:63;;5961:117;6117:2;6143:53;6188:7;6179:6;6168:9;6164:22;6143:53;:::i;:::-;6133:63;;6088:118;6245:2;6271:53;6316:7;6307:6;6296:9;6292:22;6271:53;:::i;:::-;6261:63;;6216:118;5722:619;;;;;:::o;6347:329::-;6406:6;6455:2;6443:9;6434:7;6430:23;6426:32;6423:119;;;6461:79;;:::i;:::-;6423:119;6581:1;6606:53;6651:7;6642:6;6631:9;6627:22;6606:53;:::i;:::-;6596:63;;6552:117;6347:329;;;;:::o;6682:117::-;6791:1;6788;6781:12;6805:117;6914:1;6911;6904:12;6928:180;6976:77;6973:1;6966:88;7073:4;7070:1;7063:15;7097:4;7094:1;7087:15;7114:281;7197:27;7219:4;7197:27;:::i;:::-;7189:6;7185:40;7327:6;7315:10;7312:22;7291:18;7279:10;7276:34;7273:62;7270:88;;;7338:18;;:::i;:::-;7270:88;7378:10;7374:2;7367:22;7157:238;7114:281;;:::o;7401:129::-;7435:6;7462:20;;:::i;:::-;7452:30;;7491:33;7519:4;7511:6;7491:33;:::i;:::-;7401:129;;;:::o;7536:308::-;7598:4;7688:18;7680:6;7677:30;7674:56;;;7710:18;;:::i;:::-;7674:56;7748:29;7770:6;7748:29;:::i;:::-;7740:37;;7832:4;7826;7822:15;7814:23;;7536:308;;;:::o;7850:146::-;7947:6;7942:3;7937;7924:30;7988:1;7979:6;7974:3;7970:16;7963:27;7850:146;;;:::o;8002:425::-;8080:5;8105:66;8121:49;8163:6;8121:49;:::i;:::-;8105:66;:::i;:::-;8096:75;;8194:6;8187:5;8180:21;8232:4;8225:5;8221:16;8270:3;8261:6;8256:3;8252:16;8249:25;8246:112;;;8277:79;;:::i;:::-;8246:112;8367:54;8414:6;8409:3;8404;8367:54;:::i;:::-;8086:341;8002:425;;;;;:::o;8447:340::-;8503:5;8552:3;8545:4;8537:6;8533:17;8529:27;8519:122;;8560:79;;:::i;:::-;8519:122;8677:6;8664:20;8702:79;8777:3;8769:6;8762:4;8754:6;8750:17;8702:79;:::i;:::-;8693:88;;8509:278;8447:340;;;;:::o;8793:509::-;8862:6;8911:2;8899:9;8890:7;8886:23;8882:32;8879:119;;;8917:79;;:::i;:::-;8879:119;9065:1;9054:9;9050:17;9037:31;9095:18;9087:6;9084:30;9081:117;;;9117:79;;:::i;:::-;9081:117;9222:63;9277:7;9268:6;9257:9;9253:22;9222:63;:::i;:::-;9212:73;;9008:287;8793:509;;;;:::o;9308:116::-;9378:21;9393:5;9378:21;:::i;:::-;9371:5;9368:32;9358:60;;9414:1;9411;9404:12;9358:60;9308:116;:::o;9430:133::-;9473:5;9511:6;9498:20;9489:29;;9527:30;9551:5;9527:30;:::i;:::-;9430:133;;;;:::o;9569:468::-;9634:6;9642;9691:2;9679:9;9670:7;9666:23;9662:32;9659:119;;;9697:79;;:::i;:::-;9659:119;9817:1;9842:53;9887:7;9878:6;9867:9;9863:22;9842:53;:::i;:::-;9832:63;;9788:117;9944:2;9970:50;10012:7;10003:6;9992:9;9988:22;9970:50;:::i;:::-;9960:60;;9915:115;9569:468;;;;;:::o;10043:117::-;10152:1;10149;10142:12;10166:117;10275:1;10272;10265:12;10302:552;10359:8;10369:6;10419:3;10412:4;10404:6;10400:17;10396:27;10386:122;;10427:79;;:::i;:::-;10386:122;10540:6;10527:20;10517:30;;10570:18;10562:6;10559:30;10556:117;;;10592:79;;:::i;:::-;10556:117;10706:4;10698:6;10694:17;10682:29;;10760:3;10752:4;10744:6;10740:17;10730:8;10726:32;10723:41;10720:128;;;10767:79;;:::i;:::-;10720:128;10302:552;;;;;:::o;10860:963::-;10957:6;10965;10973;10981;10989;11038:3;11026:9;11017:7;11013:23;11009:33;11006:120;;;11045:79;;:::i;:::-;11006:120;11165:1;11190:53;11235:7;11226:6;11215:9;11211:22;11190:53;:::i;:::-;11180:63;;11136:117;11292:2;11318:53;11363:7;11354:6;11343:9;11339:22;11318:53;:::i;:::-;11308:63;;11263:118;11420:2;11446:53;11491:7;11482:6;11471:9;11467:22;11446:53;:::i;:::-;11436:63;;11391:118;11576:2;11565:9;11561:18;11548:32;11607:18;11599:6;11596:30;11593:117;;;11629:79;;:::i;:::-;11593:117;11742:64;11798:7;11789:6;11778:9;11774:22;11742:64;:::i;:::-;11724:82;;;;11519:297;10860:963;;;;;;;;:::o;11829:654::-;11907:6;11915;11964:2;11952:9;11943:7;11939:23;11935:32;11932:119;;;11970:79;;:::i;:::-;11932:119;12090:1;12115:53;12160:7;12151:6;12140:9;12136:22;12115:53;:::i;:::-;12105:63;;12061:117;12245:2;12234:9;12230:18;12217:32;12276:18;12268:6;12265:30;12262:117;;;12298:79;;:::i;:::-;12262:117;12403:63;12458:7;12449:6;12438:9;12434:22;12403:63;:::i;:::-;12393:73;;12188:288;11829:654;;;;;:::o;12503:553::-;12561:8;12571:6;12621:3;12614:4;12606:6;12602:17;12598:27;12588:122;;12629:79;;:::i;:::-;12588:122;12742:6;12729:20;12719:30;;12772:18;12764:6;12761:30;12758:117;;;12794:79;;:::i;:::-;12758:117;12908:4;12900:6;12896:17;12884:29;;12962:3;12954:4;12946:6;12942:17;12932:8;12928:32;12925:41;12922:128;;;12969:79;;:::i;:::-;12922:128;12503:553;;;;;:::o;13062:674::-;13142:6;13150;13158;13207:2;13195:9;13186:7;13182:23;13178:32;13175:119;;;13213:79;;:::i;:::-;13175:119;13333:1;13358:53;13403:7;13394:6;13383:9;13379:22;13358:53;:::i;:::-;13348:63;;13304:117;13488:2;13477:9;13473:18;13460:32;13519:18;13511:6;13508:30;13505:117;;;13541:79;;:::i;:::-;13505:117;13654:65;13711:7;13702:6;13691:9;13687:22;13654:65;:::i;:::-;13636:83;;;;13431:298;13062:674;;;;;:::o;13742:1017::-;13842:6;13850;13858;13866;13874;13923:2;13911:9;13902:7;13898:23;13894:32;13891:119;;;13929:79;;:::i;:::-;13891:119;14049:1;14074:53;14119:7;14110:6;14099:9;14095:22;14074:53;:::i;:::-;14064:63;;14020:117;14204:2;14193:9;14189:18;14176:32;14235:18;14227:6;14224:30;14221:117;;;14257:79;;:::i;:::-;14221:117;14370:65;14427:7;14418:6;14407:9;14403:22;14370:65;:::i;:::-;14352:83;;;;14147:298;14512:2;14501:9;14497:18;14484:32;14543:18;14535:6;14532:30;14529:117;;;14565:79;;:::i;:::-;14529:117;14678:64;14734:7;14725:6;14714:9;14710:22;14678:64;:::i;:::-;14660:82;;;;14455:297;13742:1017;;;;;;;;:::o;14765:180::-;14813:77;14810:1;14803:88;14910:4;14907:1;14900:15;14934:4;14931:1;14924:15;14951:320;14995:6;15032:1;15026:4;15022:12;15012:22;;15079:1;15073:4;15069:12;15100:18;15090:81;;15156:4;15148:6;15144:17;15134:27;;15090:81;15218:2;15210:6;15207:14;15187:18;15184:38;15181:84;;15237:18;;:::i;:::-;15181:84;15002:269;14951:320;;;:::o;15277:231::-;15417:34;15413:1;15405:6;15401:14;15394:58;15486:14;15481:2;15473:6;15469:15;15462:39;15277:231;:::o;15514:366::-;15656:3;15677:67;15741:2;15736:3;15677:67;:::i;:::-;15670:74;;15753:93;15842:3;15753:93;:::i;:::-;15871:2;15866:3;15862:12;15855:19;;15514:366;;;:::o;15886:419::-;16052:4;16090:2;16079:9;16075:18;16067:26;;16139:9;16133:4;16129:20;16125:1;16114:9;16110:17;16103:47;16167:131;16293:4;16167:131;:::i;:::-;16159:139;;15886:419;;;:::o;16311:243::-;16451:34;16447:1;16439:6;16435:14;16428:58;16520:26;16515:2;16507:6;16503:15;16496:51;16311:243;:::o;16560:366::-;16702:3;16723:67;16787:2;16782:3;16723:67;:::i;:::-;16716:74;;16799:93;16888:3;16799:93;:::i;:::-;16917:2;16912:3;16908:12;16901:19;;16560:366;;;:::o;16932:419::-;17098:4;17136:2;17125:9;17121:18;17113:26;;17185:9;17179:4;17175:20;17171:1;17160:9;17156:17;17149:47;17213:131;17339:4;17213:131;:::i;:::-;17205:139;;16932:419;;;:::o;17357:222::-;17497:34;17493:1;17485:6;17481:14;17474:58;17566:5;17561:2;17553:6;17549:15;17542:30;17357:222;:::o;17585:366::-;17727:3;17748:67;17812:2;17807:3;17748:67;:::i;:::-;17741:74;;17824:93;17913:3;17824:93;:::i;:::-;17942:2;17937:3;17933:12;17926:19;;17585:366;;;:::o;17957:419::-;18123:4;18161:2;18150:9;18146:18;18138:26;;18210:9;18204:4;18200:20;18196:1;18185:9;18181:17;18174:47;18238:131;18364:4;18238:131;:::i;:::-;18230:139;;17957:419;;;:::o;18382:175::-;18522:27;18518:1;18510:6;18506:14;18499:51;18382:175;:::o;18563:366::-;18705:3;18726:67;18790:2;18785:3;18726:67;:::i;:::-;18719:74;;18802:93;18891:3;18802:93;:::i;:::-;18920:2;18915:3;18911:12;18904:19;;18563:366;;;:::o;18935:419::-;19101:4;19139:2;19128:9;19124:18;19116:26;;19188:9;19182:4;19178:20;19174:1;19163:9;19159:17;19152:47;19216:131;19342:4;19216:131;:::i;:::-;19208:139;;18935:419;;;:::o;19360:181::-;19500:33;19496:1;19488:6;19484:14;19477:57;19360:181;:::o;19547:366::-;19689:3;19710:67;19774:2;19769:3;19710:67;:::i;:::-;19703:74;;19786:93;19875:3;19786:93;:::i;:::-;19904:2;19899:3;19895:12;19888:19;;19547:366;;;:::o;19919:419::-;20085:4;20123:2;20112:9;20108:18;20100:26;;20172:9;20166:4;20162:20;20158:1;20147:9;20143:17;20136:47;20200:131;20326:4;20200:131;:::i;:::-;20192:139;;19919:419;;;:::o;20344:176::-;20484:28;20480:1;20472:6;20468:14;20461:52;20344:176;:::o;20526:366::-;20668:3;20689:67;20753:2;20748:3;20689:67;:::i;:::-;20682:74;;20765:93;20854:3;20765:93;:::i;:::-;20883:2;20878:3;20874:12;20867:19;;20526:366;;;:::o;20898:419::-;21064:4;21102:2;21091:9;21087:18;21079:26;;21151:9;21145:4;21141:20;21137:1;21126:9;21122:17;21115:47;21179:131;21305:4;21179:131;:::i;:::-;21171:139;;20898:419;;;:::o;21323:141::-;21372:4;21395:3;21387:11;;21418:3;21415:1;21408:14;21452:4;21449:1;21439:18;21431:26;;21323:141;;;:::o;21470:93::-;21507:6;21554:2;21549;21542:5;21538:14;21534:23;21524:33;;21470:93;;;:::o;21569:107::-;21613:8;21663:5;21657:4;21653:16;21632:37;;21569:107;;;;:::o;21682:393::-;21751:6;21801:1;21789:10;21785:18;21824:97;21854:66;21843:9;21824:97;:::i;:::-;21942:39;21972:8;21961:9;21942:39;:::i;:::-;21930:51;;22014:4;22010:9;22003:5;21999:21;21990:30;;22063:4;22053:8;22049:19;22042:5;22039:30;22029:40;;21758:317;;21682:393;;;;;:::o;22081:60::-;22109:3;22130:5;22123:12;;22081:60;;;:::o;22147:142::-;22197:9;22230:53;22248:34;22257:24;22275:5;22257:24;:::i;:::-;22248:34;:::i;:::-;22230:53;:::i;:::-;22217:66;;22147:142;;;:::o;22295:75::-;22338:3;22359:5;22352:12;;22295:75;;;:::o;22376:269::-;22486:39;22517:7;22486:39;:::i;:::-;22547:91;22596:41;22620:16;22596:41;:::i;:::-;22588:6;22581:4;22575:11;22547:91;:::i;:::-;22541:4;22534:105;22452:193;22376:269;;;:::o;22651:73::-;22696:3;22651:73;:::o;22730:189::-;22807:32;;:::i;:::-;22848:65;22906:6;22898;22892:4;22848:65;:::i;:::-;22783:136;22730:189;;:::o;22925:186::-;22985:120;23002:3;22995:5;22992:14;22985:120;;;23056:39;23093:1;23086:5;23056:39;:::i;:::-;23029:1;23022:5;23018:13;23009:22;;22985:120;;;22925:186;;:::o;23117:543::-;23218:2;23213:3;23210:11;23207:446;;;23252:38;23284:5;23252:38;:::i;:::-;23336:29;23354:10;23336:29;:::i;:::-;23326:8;23322:44;23519:2;23507:10;23504:18;23501:49;;;23540:8;23525:23;;23501:49;23563:80;23619:22;23637:3;23619:22;:::i;:::-;23609:8;23605:37;23592:11;23563:80;:::i;:::-;23222:431;;23207:446;23117:543;;;:::o;23666:117::-;23720:8;23770:5;23764:4;23760:16;23739:37;;23666:117;;;;:::o;23789:169::-;23833:6;23866:51;23914:1;23910:6;23902:5;23899:1;23895:13;23866:51;:::i;:::-;23862:56;23947:4;23941;23937:15;23927:25;;23840:118;23789:169;;;;:::o;23963:295::-;24039:4;24185:29;24210:3;24204:4;24185:29;:::i;:::-;24177:37;;24247:3;24244:1;24240:11;24234:4;24231:21;24223:29;;23963:295;;;;:::o;24263:1395::-;24380:37;24413:3;24380:37;:::i;:::-;24482:18;24474:6;24471:30;24468:56;;;24504:18;;:::i;:::-;24468:56;24548:38;24580:4;24574:11;24548:38;:::i;:::-;24633:67;24693:6;24685;24679:4;24633:67;:::i;:::-;24727:1;24751:4;24738:17;;24783:2;24775:6;24772:14;24800:1;24795:618;;;;25457:1;25474:6;25471:77;;;25523:9;25518:3;25514:19;25508:26;25499:35;;25471:77;25574:67;25634:6;25627:5;25574:67;:::i;:::-;25568:4;25561:81;25430:222;24765:887;;24795:618;24847:4;24843:9;24835:6;24831:22;24881:37;24913:4;24881:37;:::i;:::-;24940:1;24954:208;24968:7;24965:1;24962:14;24954:208;;;25047:9;25042:3;25038:19;25032:26;25024:6;25017:42;25098:1;25090:6;25086:14;25076:24;;25145:2;25134:9;25130:18;25117:31;;24991:4;24988:1;24984:12;24979:17;;24954:208;;;25190:6;25181:7;25178:19;25175:179;;;25248:9;25243:3;25239:19;25233:26;25291:48;25333:4;25325:6;25321:17;25310:9;25291:48;:::i;:::-;25283:6;25276:64;25198:156;25175:179;25400:1;25396;25388:6;25384:14;25380:22;25374:4;25367:36;24802:611;;;24765:887;;24355:1303;;;24263:1395;;:::o;25664:229::-;25804:34;25800:1;25792:6;25788:14;25781:58;25873:12;25868:2;25860:6;25856:15;25849:37;25664:229;:::o;25899:366::-;26041:3;26062:67;26126:2;26121:3;26062:67;:::i;:::-;26055:74;;26138:93;26227:3;26138:93;:::i;:::-;26256:2;26251:3;26247:12;26240:19;;25899:366;;;:::o;26271:419::-;26437:4;26475:2;26464:9;26460:18;26452:26;;26524:9;26518:4;26514:20;26510:1;26499:9;26495:17;26488:47;26552:131;26678:4;26552:131;:::i;:::-;26544:139;;26271:419;;;:::o;26696:234::-;26836:34;26832:1;26824:6;26820:14;26813:58;26905:17;26900:2;26892:6;26888:15;26881:42;26696:234;:::o;26936:366::-;27078:3;27099:67;27163:2;27158:3;27099:67;:::i;:::-;27092:74;;27175:93;27264:3;27175:93;:::i;:::-;27293:2;27288:3;27284:12;27277:19;;26936:366;;;:::o;27308:419::-;27474:4;27512:2;27501:9;27497:18;27489:26;;27561:9;27555:4;27551:20;27547:1;27536:9;27532:17;27525:47;27589:131;27715:4;27589:131;:::i;:::-;27581:139;;27308:419;;;:::o;27733:148::-;27835:11;27872:3;27857:18;;27733:148;;;;:::o;27911:874::-;28014:3;28051:5;28045:12;28080:36;28106:9;28080:36;:::i;:::-;28132:89;28214:6;28209:3;28132:89;:::i;:::-;28125:96;;28252:1;28241:9;28237:17;28268:1;28263:166;;;;28443:1;28438:341;;;;28230:549;;28263:166;28347:4;28343:9;28332;28328:25;28323:3;28316:38;28409:6;28402:14;28395:22;28387:6;28383:35;28378:3;28374:45;28367:52;;28263:166;;28438:341;28505:38;28537:5;28505:38;:::i;:::-;28565:1;28579:154;28593:6;28590:1;28587:13;28579:154;;;28667:7;28661:14;28657:1;28652:3;28648:11;28641:35;28717:1;28708:7;28704:15;28693:26;;28615:4;28612:1;28608:12;28603:17;;28579:154;;;28762:6;28757:3;28753:16;28746:23;;28445:334;;28230:549;;28018:767;;27911:874;;;;:::o;28791:423::-;28965:3;28987:92;29075:3;29066:6;28987:92;:::i;:::-;28980:99;;29096:92;29184:3;29175:6;29096:92;:::i;:::-;29089:99;;29205:3;29198:10;;28791:423;;;;;:::o;29220:231::-;29360:34;29356:1;29348:6;29344:14;29337:58;29429:14;29424:2;29416:6;29412:15;29405:39;29220:231;:::o;29457:366::-;29599:3;29620:67;29684:2;29679:3;29620:67;:::i;:::-;29613:74;;29696:93;29785:3;29696:93;:::i;:::-;29814:2;29809:3;29805:12;29798:19;;29457:366;;;:::o;29829:419::-;29995:4;30033:2;30022:9;30018:18;30010:26;;30082:9;30076:4;30072:20;30068:1;30057:9;30053:17;30046:47;30110:131;30236:4;30110:131;:::i;:::-;30102:139;;29829:419;;;:::o;30254:228::-;30394:34;30390:1;30382:6;30378:14;30371:58;30463:11;30458:2;30450:6;30446:15;30439:36;30254:228;:::o;30488:366::-;30630:3;30651:67;30715:2;30710:3;30651:67;:::i;:::-;30644:74;;30727:93;30816:3;30727:93;:::i;:::-;30845:2;30840:3;30836:12;30829:19;;30488:366;;;:::o;30860:419::-;31026:4;31064:2;31053:9;31049:18;31041:26;;31113:9;31107:4;31103:20;31099:1;31088:9;31084:17;31077:47;31141:131;31267:4;31141:131;:::i;:::-;31133:139;;30860:419;;;:::o;31285:223::-;31425:34;31421:1;31413:6;31409:14;31402:58;31494:6;31489:2;31481:6;31477:15;31470:31;31285:223;:::o;31514:366::-;31656:3;31677:67;31741:2;31736:3;31677:67;:::i;:::-;31670:74;;31753:93;31842:3;31753:93;:::i;:::-;31871:2;31866:3;31862:12;31855:19;;31514:366;;;:::o;31886:419::-;32052:4;32090:2;32079:9;32075:18;32067:26;;32139:9;32133:4;32129:20;32125:1;32114:9;32110:17;32103:47;32167:131;32293:4;32167:131;:::i;:::-;32159:139;;31886:419;;;:::o;32311:244::-;32451:34;32447:1;32439:6;32435:14;32428:58;32520:27;32515:2;32507:6;32503:15;32496:52;32311:244;:::o;32561:366::-;32703:3;32724:67;32788:2;32783:3;32724:67;:::i;:::-;32717:74;;32800:93;32889:3;32800:93;:::i;:::-;32918:2;32913:3;32909:12;32902:19;;32561:366;;;:::o;32933:419::-;33099:4;33137:2;33126:9;33122:18;33114:26;;33186:9;33180:4;33176:20;33172:1;33161:9;33157:17;33150:47;33214:131;33340:4;33214:131;:::i;:::-;33206:139;;32933:419;;;:::o;33358:237::-;33498:34;33494:1;33486:6;33482:14;33475:58;33567:20;33562:2;33554:6;33550:15;33543:45;33358:237;:::o;33601:366::-;33743:3;33764:67;33828:2;33823:3;33764:67;:::i;:::-;33757:74;;33840:93;33929:3;33840:93;:::i;:::-;33958:2;33953:3;33949:12;33942:19;;33601:366;;;:::o;33973:419::-;34139:4;34177:2;34166:9;34162:18;34154:26;;34226:9;34220:4;34216:20;34212:1;34201:9;34197:17;34190:47;34254:131;34380:4;34254:131;:::i;:::-;34246:139;;33973:419;;;:::o;34398:228::-;34538:34;34534:1;34526:6;34522:14;34515:58;34607:11;34602:2;34594:6;34590:15;34583:36;34398:228;:::o;34632:366::-;34774:3;34795:67;34859:2;34854:3;34795:67;:::i;:::-;34788:74;;34871:93;34960:3;34871:93;:::i;:::-;34989:2;34984:3;34980:12;34973:19;;34632:366;;;:::o;35004:419::-;35170:4;35208:2;35197:9;35193:18;35185:26;;35257:9;35251:4;35247:20;35243:1;35232:9;35228:17;35221:47;35285:131;35411:4;35285:131;:::i;:::-;35277:139;;35004:419;;;:::o;35429:182::-;35569:34;35565:1;35557:6;35553:14;35546:58;35429:182;:::o;35617:366::-;35759:3;35780:67;35844:2;35839:3;35780:67;:::i;:::-;35773:74;;35856:93;35945:3;35856:93;:::i;:::-;35974:2;35969:3;35965:12;35958:19;;35617:366;;;:::o;35989:419::-;36155:4;36193:2;36182:9;36178:18;36170:26;;36242:9;36236:4;36232:20;36228:1;36217:9;36213:17;36206:47;36270:131;36396:4;36270:131;:::i;:::-;36262:139;;35989:419;;;:::o;36414:180::-;36462:77;36459:1;36452:88;36559:4;36556:1;36549:15;36583:4;36580:1;36573:15;36600:191;36640:3;36659:20;36677:1;36659:20;:::i;:::-;36654:25;;36693:20;36711:1;36693:20;:::i;:::-;36688:25;;36736:1;36733;36729:9;36722:16;;36757:3;36754:1;36751:10;36748:36;;;36764:18;;:::i;:::-;36748:36;36600:191;;;;:::o;36797:194::-;36837:4;36857:20;36875:1;36857:20;:::i;:::-;36852:25;;36891:20;36909:1;36891:20;:::i;:::-;36886:25;;36935:1;36932;36928:9;36920:17;;36959:1;36953:4;36950:11;36947:37;;;36964:18;;:::i;:::-;36947:37;36797:194;;;;:::o;36997:98::-;37048:6;37082:5;37076:12;37066:22;;36997:98;;;:::o;37101:168::-;37184:11;37218:6;37213:3;37206:19;37258:4;37253:3;37249:14;37234:29;;37101:168;;;;:::o;37275:373::-;37361:3;37389:38;37421:5;37389:38;:::i;:::-;37443:70;37506:6;37501:3;37443:70;:::i;:::-;37436:77;;37522:65;37580:6;37575:3;37568:4;37561:5;37557:16;37522:65;:::i;:::-;37612:29;37634:6;37612:29;:::i;:::-;37607:3;37603:39;37596:46;;37365:283;37275:373;;;;:::o;37654:640::-;37849:4;37887:3;37876:9;37872:19;37864:27;;37901:71;37969:1;37958:9;37954:17;37945:6;37901:71;:::i;:::-;37982:72;38050:2;38039:9;38035:18;38026:6;37982:72;:::i;:::-;38064;38132:2;38121:9;38117:18;38108:6;38064:72;:::i;:::-;38183:9;38177:4;38173:20;38168:2;38157:9;38153:18;38146:48;38211:76;38282:4;38273:6;38211:76;:::i;:::-;38203:84;;37654:640;;;;;;;:::o;38300:141::-;38356:5;38387:6;38381:13;38372:22;;38403:32;38429:5;38403:32;:::i;:::-;38300:141;;;;:::o;38447:349::-;38516:6;38565:2;38553:9;38544:7;38540:23;38536:32;38533:119;;;38571:79;;:::i;:::-;38533:119;38691:1;38716:63;38771:7;38762:6;38751:9;38747:22;38716:63;:::i;:::-;38706:73;;38662:127;38447:349;;;;:::o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC165.sol\";\n\ncontract NoahNFT is IERC721, IERC721Metadata, IERC165 {\n    mapping(address => uint256) public balances; // 账本  NFT 持有者 =>  NFT 数量\n    mapping(uint256 => address) public owners; // 账本  NFT id =>  NFT 持有者\n    mapping(uint256 => address) public tokenApprovals; // 授权账本 NFT id =>  NFT 授权者\n    mapping(address => mapping(address => bool)) public operatorApprovals; // 授权所有 NFT 的账本  NFT 持有者 => 被授权者 => 是否授权\n    address public owner; // 合约所有者\n    string private _name; //  NFT 名称\n    string private _symbol; //  NFT 符号\n    string private _baseURI; //  NFT 的基础 MetadataURI\n    mapping(uint256 => string) private _tokenURIs; //  NFT 元数据  NFT id => 元数据\n    uint256 public totalSupply = 0; // 当前 NFT id，同时也是 NFT 总数\n\n    // 构造函数\n    constructor(\n        string memory initName,\n        string memory initSymbol,\n        string memory baseURI\n    ) {\n        owner = msg.sender;\n        _name = initName;\n        _symbol = initSymbol;\n        _baseURI = baseURI;\n    }\n\n    // 检查合约是否实现了某个接口\n    function supportsInterface(bytes4 interfaceId)\n        public\n        pure\n        override\n        returns (bool)\n    {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            interfaceId == type(IERC165).interfaceId;\n    }\n\n    // 查询 NFT 名称\n    function name() public view override returns (string memory) {\n        return _name;\n    }\n\n    // 查询 NFT 符号\n    function symbol() public view override returns (string memory) {\n        return _symbol;\n    }\n\n    // 设置 NFT 的基础 MetadataURI\n    function setBaseURI(string memory baseURI) public {\n        require(msg.sender == owner, \"only owner can set baseURI\");\n        _baseURI = baseURI;\n    }\n\n    // 查询 NFT 的 MetadataURI\n    function tokenURI(uint256 tokenId)\n        public\n        view\n        virtual\n        override\n        returns (string memory)\n    {\n        require(\n            _exists(tokenId),\n            \"ERC721Metadata: URI query for nonexistent token\"\n        );\n\n        return\n            bytes(_baseURI).length > 0\n                ? string(abi.encodePacked(_baseURI, _tokenURIs[tokenId]))\n                : \"\";\n    }\n\n    // 检查某个 NFT 是否存在\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return owners[tokenId] != address(0);\n    }\n\n    // 查询某个地址的 NFT 数量\n    function balanceOf(address _owner) public view override returns (uint256) {\n        //  NFT 持有者地址不能为0\n        require(\n            _owner != address(0),\n            \"ERC721: balance query for the zero address\"\n        );\n        return balances[_owner];\n    }\n\n    // 查询某个 NFT 的持有者\n    function ownerOf(uint256 tokenId) public view override returns (address) {\n        return _ownerOf(tokenId);\n    }\n\n    // 查询某个 NFT 的持有者 内部函数\n    function _ownerOf(uint256 tokenId) internal view returns (address) {\n        address tokenOwner = owners[tokenId];\n        //  NFT 持有者地址不能为0\n        require(\n            tokenOwner != address(0),\n            \"ERC721: owner query for nonexistent token\"\n        );\n        return tokenOwner;\n    }\n\n    // 授权单个 NFT\n    function approve(address to, uint256 tokenId) public override {\n        address tokenOwner = owners[tokenId]; //  NFT 持有者\n        // 发送者必须是 NFT 持有者或者 NFT 持有者已经将所有 NFT 授权给发送者\n        require(\n            msg.sender == tokenOwner ||\n                isApprovedForAll(tokenOwner, msg.sender),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n        // NFT 持有者不能将 NFT 授权给自己\n        require(\n            tokenOwner == msg.sender,\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n        // 被授权地址不能为0\n        require(to != address(0), \"ERC721: approve to the zero address\");\n        // 授权者与被授权者不能为同一地址\n        require(tokenOwner != to, \"ERC721: approve to caller\");\n        // 授权者已经将所有 NFT 授权给被授权者\n        require(\n            !isApprovedForAll(tokenOwner, to),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n        // 将 NFT 授权给被授权者\n        tokenApprovals[tokenId] = to;\n        // 触发授权事件\n        emit Approval(tokenOwner, to, tokenId);\n    }\n\n    // 查询某个 NFT 的授权者\n    function getApproved(uint256 tokenId)\n        public\n        view\n        override\n        returns (address)\n    {\n        address tokenOwner = owners[tokenId]; //  NFT 持有者\n        //  NFT 持有者地址不能为0\n        require(\n            tokenOwner != address(0),\n            \"ERC721: approved query for nonexistent token\"\n        );\n        return tokenApprovals[tokenId];\n    }\n\n    // 授权或撤销所有 NFT\n    function setApprovalForAll(address operator, bool approved)\n        public\n        override\n    {\n        // 被授权者地址不能为0\n        require(operator != address(0), \"ERC721: approve to the zero address\");\n        // 被授权者与发送者不能为同一地址\n        require(operator != msg.sender, \"ERC721: approve to caller\");\n        // 将所有 NFT 授权给被授权者\n        operatorApprovals[msg.sender][operator] = approved;\n        // 触发授权所有 NFT 事件\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    // 查询某个 NFT 持有者是否将所有 NFT 授权给某个地址\n    function isApprovedForAll(address _owner, address operator)\n        public\n        view\n        override\n        returns (bool)\n    {\n        //  NFT 持有者地址不能为0\n        require(\n            _owner != address(0),\n            \"ERC721: operator query for nonexistent token\"\n        );\n        // 被授权者地址不能为0\n        require(\n            operator != address(0),\n            \"ERC721: operator query for nonexistent token\"\n        );\n        return operatorApprovals[_owner][operator];\n    }\n\n    // 转移 NFT\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public override {\n        _transfer(from, to, tokenId);\n    }\n\n    // 转移 NFT\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal {\n        address tokenOwner = owners[tokenId]; //  NFT 持有者\n        // from 必须是 NFT 持有者\n        require(\n            tokenOwner == from,\n            \"ERC721: transfer of token that is not own\"\n        );\n        // 被授权者地址不能为0\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n        // 合约调用者必须是 NFT 持有者或者 NFT 持有者已经将所有 NFT 授权给合约调用者或者 NFT 持有者已经将该 NFT 授权给合约调用者\n        require(\n            tokenOwner == msg.sender ||\n                isApprovedForAll(tokenOwner, msg.sender) ||\n                tokenApprovals[tokenId] == msg.sender,\n            \"ERC721: transfer caller is not owner nor approved for all\"\n        );\n        // 撤销 NFT 授权\n        _clearApproval(tokenId);\n        // 同步 NFT 持有者持币数量\n        _removeTokenFrom(from, tokenId);\n        // 转移 NFT\n        _addTokenTo(to, tokenId);\n        // 触发转移 NFT 事件\n        emit Transfer(from, to, tokenId);\n    }\n\n    // 撤销 NFT 授权\n    function _clearApproval(uint256 tokenId) internal {\n        // 撤销 NFT 授权\n        if (tokenApprovals[tokenId] != address(0)) {\n            delete tokenApprovals[tokenId];\n        }\n    }\n\n    // 同步 NFT 持有者持币数量\n    function _removeTokenFrom(address from, uint256 tokenId) internal {\n        //  NFT 持有者持币数量减一\n        balances[from] -= 1;\n        // 从 NFT 持有者持币列表中删除该 NFT\n        delete owners[tokenId];\n    }\n\n    // 转移 NFT\n    function _addTokenTo(address to, uint256 tokenId) internal {\n        //  NFT 持有者持币数量加一\n        balances[to] += 1;\n        // 将 NFT 添加到 NFT 持有者持币列表中\n        owners[tokenId] = to;\n    }\n\n    // 检查被授权者是否接收 NFT\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        bytes memory _data\n    ) internal returns (bool) {\n        // 如果被授权者不是合约则表示接收成功\n        if (to.code.length == 0) {\n            return true;\n        }\n        // 调用被授权者的 onERC721Received 函数\n        try\n            IERC721Receiver(to).onERC721Received(\n                msg.sender,\n                from,\n                totalSupply,\n                _data\n            )\n        returns (bytes4 retval) {\n            // 如果返回值为 ERC721_RECEIVED 则表示接收成功\n            return retval == IERC721Receiver(to).onERC721Received.selector;\n        } catch (bytes memory reason) {\n            // 如果调用失败则表示接收失败\n            if (reason.length == 0) {\n                revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n            } else {\n                assembly {\n                    revert(add(32, reason), mload(reason))\n                }\n            }\n        }\n    }\n\n    // 安全转移 NFT  无 data 参数\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public override {\n        // 调用安全转移 NFT\n        _safeTransfer(from, to, tokenId, \"\");\n    }\n\n    // 安全转移 NFT  有 data 参数\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) public override {\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    // 安全批量转移 NFT  内部函数\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal {\n        // 调用转移 NFT\n        _transfer(from, to, tokenId);\n        // 检查被授权者是否接收 NFT\n        require(\n            _checkOnERC721Received(from, to, data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    // 铸造 NFT\n    function mint(address to, string memory _tokenURI)\n        public\n        returns (uint256)\n    {\n        // 铸造 NFT\n        return _mint(to, _tokenURI);\n    }\n\n    // 安全铸造 NFT  无 data 参数\n    function safeMint(address to, string calldata _tokenURI)\n        public\n        returns (uint256)\n    {\n        return _safeMint(to, _tokenURI, \"\");\n    }\n\n    // 安全铸造 NFT  有 data 参数\n    function safeMint(\n        address to,\n        string calldata _tokenURI,\n        bytes calldata data\n    ) public returns (uint256) {\n        return _safeMint(to, _tokenURI, data);\n    }\n\n    // 铸造 NFT  内部函数\n    function _mint(address to, string memory _tokenURI)\n        internal\n        returns (uint256)\n    {\n        // 被授权者地址不能为0\n        require(to != address(0), \"ERC721: mint to the zero address\");\n\n        // 更新当前 NFT ID\n        totalSupply += 1;\n\n        // 调用转移 NFT\n        _addTokenTo(to, totalSupply);\n        // 触发 NFT 转移事件\n        emit Transfer(address(0), to, totalSupply);\n\n        // 设置 Token URI\n        _setTokenURI(totalSupply, _tokenURI);\n\n        // 返回当前 NFT ID\n        return totalSupply;\n    }\n\n    // 设置 Token URI 内部函数\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal {\n        // 设置 Token URI\n        _tokenURIs[tokenId] = _tokenURI;\n    }\n\n    // 安全铸造 NFT  内部函数\n    function _safeMint(\n        address to,\n        string memory _tokenURI,\n        bytes memory _data\n    ) internal returns (uint256) {\n        // 检查被授权者是否接收 NFT\n        require(\n            _checkOnERC721Received(address(0), to, _data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n        // 调用铸造 NFT\n        return _mint(to, _tokenURI);\n    }\n\n    // 销毁 NFT\n    function burn(uint256 tokenId) public {\n        // 合约调用者必须是 NFT 持有者\n        require(\n            msg.sender == _ownerOf(tokenId),\n            \"ERC721: caller is not the owner\"\n        );\n        // 调用销毁 NFT\n        _burn(tokenId);\n    }\n\n    // 销毁 NFT  内部函数\n    function _burn(uint256 tokenId) internal {\n        // 调用转移 NFT\n        _transfer(_ownerOf(tokenId), address(0), tokenId);\n    }\n}\n",
  "sourcePath": "/Users/luzhenqian/Work/web3/web3-examples/contract/noah-nft/contracts/NoahNFT.sol",
  "ast": {
    "absolutePath": "project:/contracts/NoahNFT.sol",
    "exportedSymbols": {
      "IERC165": [
        9
      ],
      "IERC721": [
        109
      ],
      "IERC721Metadata": [
        141
      ],
      "IERC721Receiver": [
        123
      ],
      "NoahNFT": [
        1029
      ]
    },
    "id": 1030,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 143,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:2"
      },
      {
        "absolutePath": "project:/contracts/IERC721.sol",
        "file": "./IERC721.sol",
        "id": 144,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 1030,
        "sourceUnit": 142,
        "src": "58:23:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/IERC165.sol",
        "file": "./IERC165.sol",
        "id": 145,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 1030,
        "sourceUnit": 10,
        "src": "82:23:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 146,
              "name": "IERC721",
              "nameLocations": [
                "127:7:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 109,
              "src": "127:7:2"
            },
            "id": 147,
            "nodeType": "InheritanceSpecifier",
            "src": "127:7:2"
          },
          {
            "baseName": {
              "id": 148,
              "name": "IERC721Metadata",
              "nameLocations": [
                "136:15:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 141,
              "src": "136:15:2"
            },
            "id": 149,
            "nodeType": "InheritanceSpecifier",
            "src": "136:15:2"
          },
          {
            "baseName": {
              "id": 150,
              "name": "IERC165",
              "nameLocations": [
                "153:7:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9,
              "src": "153:7:2"
            },
            "id": 151,
            "nodeType": "InheritanceSpecifier",
            "src": "153:7:2"
          }
        ],
        "canonicalName": "NoahNFT",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1029,
        "linearizedBaseContracts": [
          1029,
          9,
          141,
          109
        ],
        "name": "NoahNFT",
        "nameLocation": "116:7:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "27e235e3",
            "id": 155,
            "mutability": "mutable",
            "name": "balances",
            "nameLocation": "202:8:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "167:43:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 154,
              "keyType": {
                "id": 152,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "175:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "167:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 153,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "186:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "025e7c27",
            "id": 159,
            "mutability": "mutable",
            "name": "owners",
            "nameLocation": "291:6:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "256:41:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 158,
              "keyType": {
                "id": 156,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "264:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "256:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 157,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "275:7:2",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "acdeb5b9",
            "id": 163,
            "mutability": "mutable",
            "name": "tokenApprovals",
            "nameLocation": "374:14:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "339:49:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 162,
              "keyType": {
                "id": 160,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "347:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "339:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 161,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "358:7:2",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "0d95e054",
            "id": 169,
            "mutability": "mutable",
            "name": "operatorApprovals",
            "nameLocation": "487:17:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "435:69:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(address => bool))"
            },
            "typeName": {
              "id": 168,
              "keyType": {
                "id": 164,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "443:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "435:44:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(address => bool))"
              },
              "valueType": {
                "id": 167,
                "keyType": {
                  "id": 165,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "462:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "454:24:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 166,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "473:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8da5cb5b",
            "id": 171,
            "mutability": "mutable",
            "name": "owner",
            "nameLocation": "602:5:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "587:20:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 170,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "587:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 173,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "647:5:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "632:20:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 172,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "632:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 175,
            "mutability": "mutable",
            "name": "_symbol",
            "nameLocation": "688:7:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "673:22:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 174,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "673:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 177,
            "mutability": "mutable",
            "name": "_baseURI",
            "nameLocation": "731:8:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "716:23:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 176,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "716:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 181,
            "mutability": "mutable",
            "name": "_tokenURIs",
            "nameLocation": "810:10:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "775:45:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
              "typeString": "mapping(uint256 => string)"
            },
            "typeName": {
              "id": 180,
              "keyType": {
                "id": 178,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "783:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "775:26:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                "typeString": "mapping(uint256 => string)"
              },
              "valueType": {
                "id": 179,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "794:6:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "18160ddd",
            "id": 184,
            "mutability": "mutable",
            "name": "totalSupply",
            "nameLocation": "880:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 1029,
            "src": "865:30:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 182,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "865:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 183,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "894:1:2",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 210,
              "nodeType": "Block",
              "src": "1080:119:2",
              "statements": [
                {
                  "expression": {
                    "id": 196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 193,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 171,
                      "src": "1090:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 194,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "1098:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 195,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1102:6:2",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "1098:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1090:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 197,
                  "nodeType": "ExpressionStatement",
                  "src": "1090:18:2"
                },
                {
                  "expression": {
                    "id": 200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 198,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 173,
                      "src": "1118:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 199,
                      "name": "initName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 186,
                      "src": "1126:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1118:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 201,
                  "nodeType": "ExpressionStatement",
                  "src": "1118:16:2"
                },
                {
                  "expression": {
                    "id": 204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 202,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 175,
                      "src": "1144:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 203,
                      "name": "initSymbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 188,
                      "src": "1154:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1144:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 205,
                  "nodeType": "ExpressionStatement",
                  "src": "1144:20:2"
                },
                {
                  "expression": {
                    "id": 208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 206,
                      "name": "_baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 177,
                      "src": "1174:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 207,
                      "name": "baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 190,
                      "src": "1185:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1174:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 209,
                  "nodeType": "ExpressionStatement",
                  "src": "1174:18:2"
                }
              ]
            },
            "id": 211,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 186,
                  "mutability": "mutable",
                  "name": "initName",
                  "nameLocation": "1000:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 211,
                  "src": "986:22:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 185,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 188,
                  "mutability": "mutable",
                  "name": "initSymbol",
                  "nameLocation": "1032:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 211,
                  "src": "1018:24:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 187,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1018:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 190,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1066:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 211,
                  "src": "1052:21:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1052:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "976:103:2"
            },
            "returnParameters": {
              "id": 192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1080:0:2"
            },
            "scope": 1029,
            "src": "965:234:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              8
            ],
            "body": {
              "id": 240,
              "nodeType": "Block",
              "src": "1371:196:2",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 219,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 213,
                          "src": "1400:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 221,
                                "name": "IERC721",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 109,
                                "src": "1420:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$109_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$109_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              ],
                              "id": 220,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "1415:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1415:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$109",
                              "typeString": "type(contract IERC721)"
                            }
                          },
                          "id": 223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1429:11:2",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1415:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1400:40:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 225,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 213,
                          "src": "1456:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 227,
                                "name": "IERC721Metadata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 141,
                                "src": "1476:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$141_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$141_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              ],
                              "id": 226,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "1471:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1471:21:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$141",
                              "typeString": "type(contract IERC721Metadata)"
                            }
                          },
                          "id": 229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1493:11:2",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1471:33:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1456:48:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1400:104:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 232,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 213,
                        "src": "1520:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 234,
                              "name": "IERC165",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "1540:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC165_$9_$",
                                "typeString": "type(contract IERC165)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_IERC165_$9_$",
                                "typeString": "type(contract IERC165)"
                              }
                            ],
                            "id": 233,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "1535:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1535:13:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$9",
                            "typeString": "type(contract IERC165)"
                          }
                        },
                        "id": 236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1549:11:2",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "1535:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "1520:40:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1400:160:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 218,
                  "id": 239,
                  "nodeType": "Return",
                  "src": "1381:179:2"
                }
              ]
            },
            "functionSelector": "01ffc9a7",
            "id": 241,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "1261:17:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 215,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1335:8:2"
            },
            "parameters": {
              "id": 214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 213,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "1286:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 241,
                  "src": "1279:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 212,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1279:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1278:20:2"
            },
            "returnParameters": {
              "id": 218,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 217,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 241,
                  "src": "1361:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 216,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1361:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1360:6:2"
            },
            "scope": 1029,
            "src": "1252:315:2",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              128
            ],
            "body": {
              "id": 249,
              "nodeType": "Block",
              "src": "1659:29:2",
              "statements": [
                {
                  "expression": {
                    "id": 247,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 173,
                    "src": "1676:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 246,
                  "id": 248,
                  "nodeType": "Return",
                  "src": "1669:12:2"
                }
              ]
            },
            "functionSelector": "06fdde03",
            "id": 250,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nameLocation": "1607:4:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 243,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1626:8:2"
            },
            "parameters": {
              "id": 242,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1611:2:2"
            },
            "returnParameters": {
              "id": 246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 245,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 250,
                  "src": "1644:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 244,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1644:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1643:15:2"
            },
            "scope": 1029,
            "src": "1598:90:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              133
            ],
            "body": {
              "id": 258,
              "nodeType": "Block",
              "src": "1782:31:2",
              "statements": [
                {
                  "expression": {
                    "id": 256,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 175,
                    "src": "1799:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 255,
                  "id": 257,
                  "nodeType": "Return",
                  "src": "1792:14:2"
                }
              ]
            },
            "functionSelector": "95d89b41",
            "id": 259,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nameLocation": "1728:6:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 252,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1749:8:2"
            },
            "parameters": {
              "id": 251,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1734:2:2"
            },
            "returnParameters": {
              "id": 255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 254,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 259,
                  "src": "1767:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 253,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1767:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1766:15:2"
            },
            "scope": 1029,
            "src": "1719:94:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 276,
              "nodeType": "Block",
              "src": "1909:103:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 265,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "1927:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1931:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1927:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 267,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 171,
                          "src": "1941:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1927:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6f6e6c79206f776e65722063616e207365742062617365555249",
                        "id": 269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1948:28:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8",
                          "typeString": "literal_string \"only owner can set baseURI\""
                        },
                        "value": "only owner can set baseURI"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6da797ad8870ebb61544ca50aff5526aed2bf3d1442f940594a4006d978d83b8",
                          "typeString": "literal_string \"only owner can set baseURI\""
                        }
                      ],
                      "id": 264,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1919:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 270,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1919:58:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 271,
                  "nodeType": "ExpressionStatement",
                  "src": "1919:58:2"
                },
                {
                  "expression": {
                    "id": 274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 272,
                      "name": "_baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 177,
                      "src": "1987:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 273,
                      "name": "baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 261,
                      "src": "1998:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1987:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 275,
                  "nodeType": "ExpressionStatement",
                  "src": "1987:18:2"
                }
              ]
            },
            "functionSelector": "55f804b3",
            "id": 277,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseURI",
            "nameLocation": "1868:10:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 261,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1893:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 277,
                  "src": "1879:21:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 260,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1878:23:2"
            },
            "returnParameters": {
              "id": 263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1909:0:2"
            },
            "scope": 1029,
            "src": "1859:153:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              140
            ],
            "body": {
              "id": 312,
              "nodeType": "Block",
              "src": "2184:278:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 287,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 279,
                            "src": "2223:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 286,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 330,
                          "src": "2215:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2215:16:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2245:49:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                          "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                        },
                        "value": "ERC721Metadata: URI query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                          "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                        }
                      ],
                      "id": 285,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2194:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2194:110:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 291,
                  "nodeType": "ExpressionStatement",
                  "src": "2194:110:2"
                },
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 294,
                              "name": "_baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 177,
                              "src": "2340:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "id": 293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2334:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 292,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2334:5:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2334:15:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes storage pointer"
                          }
                        },
                        "id": 296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2350:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2334:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2359:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2334:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "",
                      "id": 309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2453:2:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "id": 310,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2334:121:2",
                    "trueExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 303,
                              "name": "_baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 177,
                              "src": "2403:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 304,
                                "name": "_tokenURIs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 181,
                                "src": "2413:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                  "typeString": "mapping(uint256 => string storage ref)"
                                }
                              },
                              "id": 306,
                              "indexExpression": {
                                "id": 305,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 279,
                                "src": "2424:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2413:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              },
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "expression": {
                              "id": 301,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967295,
                              "src": "2386:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2390:12:2",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "2386:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2386:47:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2379:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        },
                        "typeName": {
                          "id": 299,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2379:6:2",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2379:55:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 284,
                  "id": 311,
                  "nodeType": "Return",
                  "src": "2315:140:2"
                }
              ]
            },
            "functionSelector": "c87b56dd",
            "id": 313,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "2061:8:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 281,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2139:8:2"
            },
            "parameters": {
              "id": 280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 279,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2078:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 313,
                  "src": "2070:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2070:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2069:17:2"
            },
            "returnParameters": {
              "id": 284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 283,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 313,
                  "src": "2165:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 282,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2165:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2164:15:2"
            },
            "scope": 1029,
            "src": "2052:410:2",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 329,
              "nodeType": "Block",
              "src": "2576:53:2",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 320,
                        "name": "owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 159,
                        "src": "2593:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 322,
                      "indexExpression": {
                        "id": 321,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 315,
                        "src": "2600:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2593:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2620:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2612:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 323,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2612:7:2",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2612:10:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2593:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 319,
                  "id": 328,
                  "nodeType": "Return",
                  "src": "2586:36:2"
                }
              ]
            },
            "id": 330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_exists",
            "nameLocation": "2514:7:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 315,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2530:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 330,
                  "src": "2522:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 314,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2522:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2521:17:2"
            },
            "returnParameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 318,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 330,
                  "src": "2570:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2570:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2569:6:2"
            },
            "scope": 1029,
            "src": "2505:124:2",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              42
            ],
            "body": {
              "id": 352,
              "nodeType": "Block",
              "src": "2749:201:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 339,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 332,
                          "src": "2822:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2840:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2832:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 340,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2832:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2832:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2822:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                        "id": 345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2856:44:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                          "typeString": "literal_string \"ERC721: balance query for the zero address\""
                        },
                        "value": "ERC721: balance query for the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                          "typeString": "literal_string \"ERC721: balance query for the zero address\""
                        }
                      ],
                      "id": 338,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2801:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2801:109:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 347,
                  "nodeType": "ExpressionStatement",
                  "src": "2801:109:2"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 348,
                      "name": "balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 155,
                      "src": "2927:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 350,
                    "indexExpression": {
                      "id": 349,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 332,
                      "src": "2936:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2927:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 337,
                  "id": 351,
                  "nodeType": "Return",
                  "src": "2920:23:2"
                }
              ]
            },
            "functionSelector": "70a08231",
            "id": 353,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "2684:9:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 334,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2722:8:2"
            },
            "parameters": {
              "id": 333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 332,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "2702:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 353,
                  "src": "2694:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2694:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2693:16:2"
            },
            "returnParameters": {
              "id": 337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 353,
                  "src": "2740:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2740:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2739:9:2"
            },
            "scope": 1029,
            "src": "2675:275:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              49
            ],
            "body": {
              "id": 365,
              "nodeType": "Block",
              "src": "3066:41:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 362,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 355,
                        "src": "3092:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 361,
                      "name": "_ownerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 392,
                      "src": "3083:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3083:17:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 360,
                  "id": 364,
                  "nodeType": "Return",
                  "src": "3076:24:2"
                }
              ]
            },
            "functionSelector": "6352211e",
            "id": 366,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ownerOf",
            "nameLocation": "3002:7:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 357,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3039:8:2"
            },
            "parameters": {
              "id": 356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 355,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3018:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 366,
                  "src": "3010:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3010:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3009:17:2"
            },
            "returnParameters": {
              "id": 360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 359,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 366,
                  "src": "3057:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 358,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3057:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3056:9:2"
            },
            "scope": 1029,
            "src": "2993:114:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 391,
              "nodeType": "Block",
              "src": "3230:244:2",
              "statements": [
                {
                  "assignments": [
                    374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 374,
                      "mutability": "mutable",
                      "name": "tokenOwner",
                      "nameLocation": "3248:10:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 391,
                      "src": "3240:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 373,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3240:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 378,
                  "initialValue": {
                    "baseExpression": {
                      "id": 375,
                      "name": "owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 159,
                      "src": "3261:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 377,
                    "indexExpression": {
                      "id": 376,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 368,
                      "src": "3268:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3261:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3240:36:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 380,
                          "name": "tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 374,
                          "src": "3349:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3371:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3363:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 381,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3363:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3363:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3349:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3387:43:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                          "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                        },
                        "value": "ERC721: owner query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                          "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                        }
                      ],
                      "id": 379,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3328:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3328:112:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 388,
                  "nodeType": "ExpressionStatement",
                  "src": "3328:112:2"
                },
                {
                  "expression": {
                    "id": 389,
                    "name": "tokenOwner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 374,
                    "src": "3457:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 372,
                  "id": 390,
                  "nodeType": "Return",
                  "src": "3450:17:2"
                }
              ]
            },
            "id": 392,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_ownerOf",
            "nameLocation": "3172:8:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 368,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3189:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 392,
                  "src": "3181:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3181:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3180:17:2"
            },
            "returnParameters": {
              "id": 372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 371,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 392,
                  "src": "3221:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3221:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3220:9:2"
            },
            "scope": 1029,
            "src": "3163:311:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              85
            ],
            "body": {
              "id": 466,
              "nodeType": "Block",
              "src": "3566:1158:2",
              "statements": [
                {
                  "assignments": [
                    401
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 401,
                      "mutability": "mutable",
                      "name": "tokenOwner",
                      "nameLocation": "3584:10:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 466,
                      "src": "3576:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 400,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3576:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 405,
                  "initialValue": {
                    "baseExpression": {
                      "id": 402,
                      "name": "owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 159,
                      "src": "3597:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 404,
                    "indexExpression": {
                      "id": 403,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 396,
                      "src": "3604:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3597:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3576:36:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 407,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3763:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3767:6:2",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3763:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 409,
                            "name": "tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 401,
                            "src": "3777:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3763:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 412,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 401,
                              "src": "3824:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 413,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "3836:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3840:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3836:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 411,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 576,
                            "src": "3807:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3807:40:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3763:84:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3861:58:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        },
                        "value": "ERC721: approve caller is not owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        }
                      ],
                      "id": 406,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3742:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3742:187:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 419,
                  "nodeType": "ExpressionStatement",
                  "src": "3742:187:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 421,
                          "name": "tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 401,
                          "src": "4014:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 422,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "4028:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4032:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "4028:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4014:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4052:58:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        },
                        "value": "ERC721: approve caller is not owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        }
                      ],
                      "id": 420,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3993:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3993:127:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 427,
                  "nodeType": "ExpressionStatement",
                  "src": "3993:127:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 429,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 394,
                          "src": "4175:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4189:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4181:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 430,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4181:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4181:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4175:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f20746865207a65726f2061646472657373",
                        "id": 435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4193:37:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
                          "typeString": "literal_string \"ERC721: approve to the zero address\""
                        },
                        "value": "ERC721: approve to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
                          "typeString": "literal_string \"ERC721: approve to the zero address\""
                        }
                      ],
                      "id": 428,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4167:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4167:64:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 437,
                  "nodeType": "ExpressionStatement",
                  "src": "4167:64:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 439,
                          "name": "tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 401,
                          "src": "4306:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 440,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 394,
                          "src": "4320:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4306:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "id": 442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4324:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        },
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        }
                      ],
                      "id": 438,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4298:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4298:54:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 444,
                  "nodeType": "ExpressionStatement",
                  "src": "4298:54:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4445:33:2",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 447,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 401,
                              "src": "4463:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 448,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "4475:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 446,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 576,
                            "src": "4446:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4446:32:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4492:58:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        },
                        "value": "ERC721: approve caller is not owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        }
                      ],
                      "id": 445,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4424:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4424:136:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 453,
                  "nodeType": "ExpressionStatement",
                  "src": "4424:136:2"
                },
                {
                  "expression": {
                    "id": 458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 454,
                        "name": "tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "4611:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 456,
                      "indexExpression": {
                        "id": 455,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 396,
                        "src": "4626:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4611:23:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 457,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 394,
                      "src": "4637:2:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4611:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 459,
                  "nodeType": "ExpressionStatement",
                  "src": "4611:28:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 461,
                        "name": "tokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 401,
                        "src": "4693:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 462,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 394,
                        "src": "4705:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 463,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 396,
                        "src": "4709:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 460,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27,
                      "src": "4684:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4684:33:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 465,
                  "nodeType": "EmitStatement",
                  "src": "4679:38:2"
                }
              ]
            },
            "functionSelector": "095ea7b3",
            "id": 467,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "3513:7:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 398,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3557:8:2"
            },
            "parameters": {
              "id": 397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 394,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3529:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 467,
                  "src": "3521:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 393,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3521:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 396,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3541:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 467,
                  "src": "3533:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 395,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3533:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3520:29:2"
            },
            "returnParameters": {
              "id": 399,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3566:0:2"
            },
            "scope": 1029,
            "src": "3504:1220:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              92
            ],
            "body": {
              "id": 495,
              "nodeType": "Block",
              "src": "4880:278:2",
              "statements": [
                {
                  "assignments": [
                    476
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 476,
                      "mutability": "mutable",
                      "name": "tokenOwner",
                      "nameLocation": "4898:10:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 495,
                      "src": "4890:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 475,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4890:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 480,
                  "initialValue": {
                    "baseExpression": {
                      "id": 477,
                      "name": "owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 159,
                      "src": "4911:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 479,
                    "indexExpression": {
                      "id": 478,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 469,
                      "src": "4918:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4911:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4890:36:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 482,
                          "name": "tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 476,
                          "src": "5017:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5039:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5031:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 483,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5031:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5031:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5017:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5055:46:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                          "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                        },
                        "value": "ERC721: approved query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                          "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                        }
                      ],
                      "id": 481,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4996:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4996:115:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 490,
                  "nodeType": "ExpressionStatement",
                  "src": "4996:115:2"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 491,
                      "name": "tokenApprovals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 163,
                      "src": "5128:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 493,
                    "indexExpression": {
                      "id": 492,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 469,
                      "src": "5143:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5128:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 474,
                  "id": 494,
                  "nodeType": "Return",
                  "src": "5121:30:2"
                }
              ]
            },
            "functionSelector": "081812fc",
            "id": 496,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getApproved",
            "nameLocation": "4776:11:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 471,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4841:8:2"
            },
            "parameters": {
              "id": 470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 469,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4796:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 496,
                  "src": "4788:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 468,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4788:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4787:17:2"
            },
            "returnParameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 473,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 496,
                  "src": "4867:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4867:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4866:9:2"
            },
            "scope": 1029,
            "src": "4767:391:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              99
            ],
            "body": {
              "id": 538,
              "nodeType": "Block",
              "src": "5293:463:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 505,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 498,
                          "src": "5351:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5371:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5363:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 506,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5363:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5363:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5351:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f20746865207a65726f2061646472657373",
                        "id": 511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5375:37:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
                          "typeString": "literal_string \"ERC721: approve to the zero address\""
                        },
                        "value": "ERC721: approve to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_274b7e9baacd1f74e5d0a15435897bf3d8e19385afe116f63c5cdd9dd816cfd4",
                          "typeString": "literal_string \"ERC721: approve to the zero address\""
                        }
                      ],
                      "id": 504,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5343:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5343:70:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 513,
                  "nodeType": "ExpressionStatement",
                  "src": "5343:70:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 515,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 498,
                          "src": "5488:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "expression": {
                            "id": 516,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "5500:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5504:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "5500:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5488:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "id": 519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5512:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        },
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        }
                      ],
                      "id": 514,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5480:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5480:60:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 521,
                  "nodeType": "ExpressionStatement",
                  "src": "5480:60:2"
                },
                {
                  "expression": {
                    "id": 529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 522,
                          "name": "operatorApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 169,
                          "src": "5597:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(address => bool))"
                          }
                        },
                        "id": 526,
                        "indexExpression": {
                          "expression": {
                            "id": 523,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "5615:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5619:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "5615:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5597:29:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 527,
                      "indexExpression": {
                        "id": 525,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "5627:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5597:39:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 528,
                      "name": "approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 500,
                      "src": "5639:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5597:50:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 530,
                  "nodeType": "ExpressionStatement",
                  "src": "5597:50:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 532,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "5718:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5722:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "5718:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 534,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "5730:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 535,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 500,
                        "src": "5740:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 531,
                      "name": "ApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 35,
                      "src": "5703:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5703:46:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 537,
                  "nodeType": "EmitStatement",
                  "src": "5698:51:2"
                }
              ]
            },
            "functionSelector": "a22cb465",
            "id": 539,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApprovalForAll",
            "nameLocation": "5206:17:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 502,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5280:8:2"
            },
            "parameters": {
              "id": 501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 498,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "5232:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "5224:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 497,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5224:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 500,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "5247:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "5242:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5242:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5223:33:2"
            },
            "returnParameters": {
              "id": 503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5293:0:2"
            },
            "scope": 1029,
            "src": "5197:559:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              108
            ],
            "body": {
              "id": 575,
              "nodeType": "Block",
              "src": "5969:385:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 550,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 541,
                          "src": "6042:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6060:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6052:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 551,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6052:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6052:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6042:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6076:46:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        },
                        "value": "ERC721: operator query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        }
                      ],
                      "id": 549,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6021:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6021:111:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 558,
                  "nodeType": "ExpressionStatement",
                  "src": "6021:111:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 560,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 543,
                          "src": "6203:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6223:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6215:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 561,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6215:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6215:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6203:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6239:46:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        },
                        "value": "ERC721: operator query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        }
                      ],
                      "id": 559,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6182:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6182:113:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 568,
                  "nodeType": "ExpressionStatement",
                  "src": "6182:113:2"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 569,
                        "name": "operatorApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 169,
                        "src": "6312:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(address => bool))"
                        }
                      },
                      "id": 571,
                      "indexExpression": {
                        "id": 570,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 541,
                        "src": "6330:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6312:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 573,
                    "indexExpression": {
                      "id": 572,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 543,
                      "src": "6338:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6312:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 548,
                  "id": 574,
                  "nodeType": "Return",
                  "src": "6305:42:2"
                }
              ]
            },
            "functionSelector": "e985e9c5",
            "id": 576,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isApprovedForAll",
            "nameLocation": "5846:16:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 545,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5933:8:2"
            },
            "parameters": {
              "id": 544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 541,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "5871:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 576,
                  "src": "5863:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 540,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5863:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 543,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "5887:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 576,
                  "src": "5879:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5879:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5862:34:2"
            },
            "returnParameters": {
              "id": 548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 547,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 576,
                  "src": "5959:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5959:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5958:6:2"
            },
            "scope": 1029,
            "src": "5837:517:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              78
            ],
            "body": {
              "id": 592,
              "nodeType": "Block",
              "src": "6489:45:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 587,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 578,
                        "src": "6509:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 588,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 580,
                        "src": "6515:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 589,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 582,
                        "src": "6519:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 586,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 667,
                      "src": "6499:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6499:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 591,
                  "nodeType": "ExpressionStatement",
                  "src": "6499:28:2"
                }
              ]
            },
            "functionSelector": "23b872dd",
            "id": 593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "6387:12:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 584,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6480:8:2"
            },
            "parameters": {
              "id": 583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 578,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "6417:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "6409:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6409:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 580,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6439:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "6431:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 579,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6431:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 582,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6459:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "6451:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6451:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6399:73:2"
            },
            "returnParameters": {
              "id": 585,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6489:0:2"
            },
            "scope": 1029,
            "src": "6378:156:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 666,
              "nodeType": "Block",
              "src": "6659:1052:2",
              "statements": [
                {
                  "assignments": [
                    603
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 603,
                      "mutability": "mutable",
                      "name": "tokenOwner",
                      "nameLocation": "6677:10:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 666,
                      "src": "6669:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 602,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6669:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 607,
                  "initialValue": {
                    "baseExpression": {
                      "id": 604,
                      "name": "owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 159,
                      "src": "6690:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 606,
                    "indexExpression": {
                      "id": 605,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 599,
                      "src": "6697:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6690:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6669:36:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 609,
                          "name": "tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 603,
                          "src": "6794:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 610,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 595,
                          "src": "6808:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6794:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e",
                        "id": 612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6826:43:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
                          "typeString": "literal_string \"ERC721: transfer of token that is not own\""
                        },
                        "value": "ERC721: transfer of token that is not own"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
                          "typeString": "literal_string \"ERC721: transfer of token that is not own\""
                        }
                      ],
                      "id": 608,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6773:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6773:106:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 614,
                  "nodeType": "ExpressionStatement",
                  "src": "6773:106:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 616,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "6937:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6951:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6943:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 617,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6943:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6943:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6937:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6955:38:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        },
                        "value": "ERC721: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        }
                      ],
                      "id": 615,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6929:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6929:65:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 624,
                  "nodeType": "ExpressionStatement",
                  "src": "6929:65:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 626,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 603,
                              "src": "7200:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 627,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "7214:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7218:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7214:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7200:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 631,
                                "name": "tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 603,
                                "src": "7261:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "expression": {
                                  "id": 632,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967281,
                                  "src": "7273:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7277:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "7273:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 630,
                              "name": "isApprovedForAll",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 576,
                              "src": "7244:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view returns (bool)"
                              }
                            },
                            "id": 634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7244:40:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7200:84:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 636,
                              "name": "tokenApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "7304:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 638,
                            "indexExpression": {
                              "id": 637,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 599,
                              "src": "7319:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7304:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 639,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "7331:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7335:6:2",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "7331:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7304:37:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7200:141:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7355:59:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved for all\""
                        },
                        "value": "ERC721: transfer caller is not owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3383740e470c840d3342b96510e4d5677357c13d3c7ca4ad003ce0a4b7657e8",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved for all\""
                        }
                      ],
                      "id": 625,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "7179:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7179:245:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 645,
                  "nodeType": "ExpressionStatement",
                  "src": "7179:245:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 647,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "7478:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 646,
                      "name": "_clearApproval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 688,
                      "src": "7463:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7463:23:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 649,
                  "nodeType": "ExpressionStatement",
                  "src": "7463:23:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 651,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 595,
                        "src": "7557:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 652,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "7563:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 650,
                      "name": "_removeTokenFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 707,
                      "src": "7540:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7540:31:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 654,
                  "nodeType": "ExpressionStatement",
                  "src": "7540:31:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 656,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "7615:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 657,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "7619:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 655,
                      "name": "_addTokenTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 727,
                      "src": "7603:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7603:24:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 659,
                  "nodeType": "ExpressionStatement",
                  "src": "7603:24:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 661,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 595,
                        "src": "7686:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 662,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "7692:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 663,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "7696:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 660,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19,
                      "src": "7677:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7677:27:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 665,
                  "nodeType": "EmitStatement",
                  "src": "7672:32:2"
                }
              ]
            },
            "id": 667,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nameLocation": "6567:9:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 595,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "6594:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 667,
                  "src": "6586:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6586:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 597,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6616:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 667,
                  "src": "6608:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6608:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 599,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6636:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 667,
                  "src": "6628:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6628:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6576:73:2"
            },
            "returnParameters": {
              "id": 601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6659:0:2"
            },
            "scope": 1029,
            "src": "6558:1153:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 687,
              "nodeType": "Block",
              "src": "7792:143:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 672,
                        "name": "tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "7835:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 674,
                      "indexExpression": {
                        "id": 673,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 669,
                        "src": "7850:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7835:23:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7870:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7862:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7862:7:2",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7862:10:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7835:37:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 686,
                  "nodeType": "IfStatement",
                  "src": "7831:98:2",
                  "trueBody": {
                    "id": 685,
                    "nodeType": "Block",
                    "src": "7874:55:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "7888:30:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 680,
                              "name": "tokenApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "7895:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 682,
                            "indexExpression": {
                              "id": 681,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 669,
                              "src": "7910:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7895:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 684,
                        "nodeType": "ExpressionStatement",
                        "src": "7888:30:2"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 688,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_clearApproval",
            "nameLocation": "7751:14:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 669,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7774:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 688,
                  "src": "7766:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7766:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7765:17:2"
            },
            "returnParameters": {
              "id": 671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7792:0:2"
            },
            "scope": 1029,
            "src": "7742:193:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 706,
              "nodeType": "Block",
              "src": "8047:169:2",
              "statements": [
                {
                  "expression": {
                    "id": 699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 695,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 155,
                        "src": "8101:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 697,
                      "indexExpression": {
                        "id": 696,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 690,
                        "src": "8110:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8101:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8119:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8101:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 700,
                  "nodeType": "ExpressionStatement",
                  "src": "8101:19:2"
                },
                {
                  "expression": {
                    "id": 704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8187:22:2",
                    "subExpression": {
                      "baseExpression": {
                        "id": 701,
                        "name": "owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 159,
                        "src": "8194:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 703,
                      "indexExpression": {
                        "id": 702,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 692,
                        "src": "8201:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8194:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 705,
                  "nodeType": "ExpressionStatement",
                  "src": "8187:22:2"
                }
              ]
            },
            "id": 707,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_removeTokenFrom",
            "nameLocation": "7990:16:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 690,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "8015:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 707,
                  "src": "8007:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8007:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 692,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8029:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 707,
                  "src": "8021:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8021:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8006:31:2"
            },
            "returnParameters": {
              "id": 694,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8047:0:2"
            },
            "scope": 1029,
            "src": "7981:235:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 726,
              "nodeType": "Block",
              "src": "8299:166:2",
              "statements": [
                {
                  "expression": {
                    "id": 718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 714,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 155,
                        "src": "8353:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 716,
                      "indexExpression": {
                        "id": 715,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 709,
                        "src": "8362:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8353:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8369:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8353:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 719,
                  "nodeType": "ExpressionStatement",
                  "src": "8353:17:2"
                },
                {
                  "expression": {
                    "id": 724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 720,
                        "name": "owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 159,
                        "src": "8438:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 722,
                      "indexExpression": {
                        "id": 721,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 711,
                        "src": "8445:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8438:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 723,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 709,
                      "src": "8456:2:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8438:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 725,
                  "nodeType": "ExpressionStatement",
                  "src": "8438:20:2"
                }
              ]
            },
            "id": 727,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addTokenTo",
            "nameLocation": "8249:11:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 709,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8269:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "8261:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 708,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8261:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 711,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8281:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "8273:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 710,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8273:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8260:29:2"
            },
            "returnParameters": {
              "id": 713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8299:0:2"
            },
            "scope": 1029,
            "src": "8240:225:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 788,
              "nodeType": "Block",
              "src": "8645:916:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 738,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 731,
                          "src": "8722:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8725:4:2",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "8722:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8730:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "8722:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8740:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8722:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 746,
                  "nodeType": "IfStatement",
                  "src": "8718:61:2",
                  "trueBody": {
                    "id": 745,
                    "nodeType": "Block",
                    "src": "8743:36:2",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8764:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 737,
                        "id": 744,
                        "nodeType": "Return",
                        "src": "8757:11:2"
                      }
                    ]
                  }
                },
                {
                  "clauses": [
                    {
                      "block": {
                        "id": 768,
                        "nodeType": "Block",
                        "src": "9046:159:2",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 760,
                                "name": "retval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 758,
                                "src": "9139:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 762,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 731,
                                        "src": "9165:2:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 761,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 123,
                                      "src": "9149:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$123_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9149:19:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$123",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "9169:16:2",
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 122,
                                  "src": "9149:36:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9186:8:2",
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "src": "9149:45:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "9139:55:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 737,
                            "id": 767,
                            "nodeType": "Return",
                            "src": "9132:62:2"
                          }
                        ]
                      },
                      "errorName": "",
                      "id": 769,
                      "nodeType": "TryCatchClause",
                      "parameters": {
                        "id": 759,
                        "nodeType": "ParameterList",
                        "parameters": [
                          {
                            "constant": false,
                            "id": 758,
                            "mutability": "mutable",
                            "name": "retval",
                            "nameLocation": "9038:6:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 769,
                            "src": "9031:13:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 757,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "9031:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "src": "9030:15:2"
                      },
                      "src": "9022:183:2"
                    },
                    {
                      "block": {
                        "id": 785,
                        "nodeType": "Block",
                        "src": "9234:321:2",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 773,
                                  "name": "reason",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 771,
                                  "src": "9307:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9314:6:2",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9307:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9324:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9307:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 783,
                              "nodeType": "Block",
                              "src": "9426:119:2",
                              "statements": [
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "9453:78:2",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "9486:2:2",
                                                  "type": "",
                                                  "value": "32"
                                                },
                                                {
                                                  "name": "reason",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9490:6:2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9482:3:2"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9482:15:2"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "reason",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9505:6:2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "9499:5:2"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9499:13:2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "9475:6:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9475:38:2"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "9475:38:2"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 771,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "9490:6:2",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 771,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "9505:6:2",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 782,
                                  "nodeType": "InlineAssembly",
                                  "src": "9444:87:2"
                                }
                              ]
                            },
                            "id": 784,
                            "nodeType": "IfStatement",
                            "src": "9303:242:2",
                            "trueBody": {
                              "id": 781,
                              "nodeType": "Block",
                              "src": "9327:93:2",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                        "id": 778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9352:52:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                        },
                                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                        }
                                      ],
                                      "id": 777,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "9345:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9345:60:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 780,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9345:60:2"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "errorName": "",
                      "id": 786,
                      "nodeType": "TryCatchClause",
                      "parameters": {
                        "id": 772,
                        "nodeType": "ParameterList",
                        "parameters": [
                          {
                            "constant": false,
                            "id": 771,
                            "mutability": "mutable",
                            "name": "reason",
                            "nameLocation": "9226:6:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 786,
                            "src": "9213:19:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 770,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9213:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "src": "9212:21:2"
                      },
                      "src": "9206:349:2"
                    }
                  ],
                  "externalCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 751,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "8915:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8919:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "8915:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 753,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 729,
                        "src": "8943:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 754,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 184,
                        "src": "8965:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 755,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 733,
                        "src": "8994:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 748,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 731,
                            "src": "8877:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 747,
                          "name": "IERC721Receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 123,
                          "src": "8861:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$123_$",
                            "typeString": "type(contract IERC721Receiver)"
                          }
                        },
                        "id": 749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8861:19:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721Receiver_$123",
                          "typeString": "contract IERC721Receiver"
                        }
                      },
                      "id": 750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8881:16:2",
                      "memberName": "onERC721Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 122,
                      "src": "8861:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8861:152:2",
                    "tryCall": true,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 787,
                  "nodeType": "TryStatement",
                  "src": "8845:710:2"
                }
              ]
            },
            "id": 789,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkOnERC721Received",
            "nameLocation": "8522:22:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 729,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "8562:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 789,
                  "src": "8554:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 728,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8554:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 731,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8584:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 789,
                  "src": "8576:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 730,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8576:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 733,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "8609:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 789,
                  "src": "8596:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 732,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8596:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8544:76:2"
            },
            "returnParameters": {
              "id": 737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 736,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 789,
                  "src": "8639:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 735,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8639:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8638:6:2"
            },
            "scope": 1029,
            "src": "8513:1048:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              58
            ],
            "body": {
              "id": 806,
              "nodeType": "Block",
              "src": "9723:87:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 800,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 791,
                        "src": "9781:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 801,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 793,
                        "src": "9787:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 802,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 795,
                        "src": "9791:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9800:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 799,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 854,
                      "src": "9767:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9767:36:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 805,
                  "nodeType": "ExpressionStatement",
                  "src": "9767:36:2"
                }
              ]
            },
            "functionSelector": "42842e0e",
            "id": 807,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "9617:16:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 797,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9714:8:2"
            },
            "parameters": {
              "id": 796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 791,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "9651:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "9643:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9643:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 793,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "9673:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "9665:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9665:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 795,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9693:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "9685:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9685:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9633:73:2"
            },
            "returnParameters": {
              "id": 798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9723:0:2"
            },
            "scope": 1029,
            "src": "9608:202:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              69
            ],
            "body": {
              "id": 826,
              "nodeType": "Block",
              "src": "10001:55:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 820,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 809,
                        "src": "10025:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 821,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 811,
                        "src": "10031:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 822,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 813,
                        "src": "10035:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 823,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 815,
                        "src": "10044:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 819,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 854,
                      "src": "10011:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10011:38:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 825,
                  "nodeType": "ExpressionStatement",
                  "src": "10011:38:2"
                }
              ]
            },
            "functionSelector": "b88d4fde",
            "id": 827,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "9866:16:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 817,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9992:8:2"
            },
            "parameters": {
              "id": 816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 809,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "9900:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "9892:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 808,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9892:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 811,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "9922:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "9914:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9914:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 813,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9942:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "9934:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9934:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "9974:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "9959:19:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9959:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9882:102:2"
            },
            "returnParameters": {
              "id": 818,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10001:0:2"
            },
            "scope": 1029,
            "src": "9857:199:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 853,
              "nodeType": "Block",
              "src": "10238:264:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 839,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 829,
                        "src": "10286:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 840,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 831,
                        "src": "10292:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 841,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 833,
                        "src": "10296:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 838,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 667,
                      "src": "10276:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10276:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 843,
                  "nodeType": "ExpressionStatement",
                  "src": "10276:28:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 846,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 829,
                            "src": "10404:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 847,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 831,
                            "src": "10410:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 848,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 835,
                            "src": "10414:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 845,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 789,
                          "src": "10381:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes memory) returns (bool)"
                          }
                        },
                        "id": 849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10381:38:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10433:52:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 844,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10360:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10360:135:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 852,
                  "nodeType": "ExpressionStatement",
                  "src": "10360:135:2"
                }
              ]
            },
            "id": 854,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeTransfer",
            "nameLocation": "10115:13:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 829,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "10146:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 854,
                  "src": "10138:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10138:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 831,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10168:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 854,
                  "src": "10160:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10160:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 833,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10188:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 854,
                  "src": "10180:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 832,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10180:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 835,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "10218:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 854,
                  "src": "10205:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 834,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10205:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10128:100:2"
            },
            "returnParameters": {
              "id": 837,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10238:0:2"
            },
            "scope": 1029,
            "src": "10106:396:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 868,
              "nodeType": "Block",
              "src": "10622:66:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 864,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 856,
                        "src": "10667:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 865,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 858,
                        "src": "10671:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 863,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 948,
                      "src": "10661:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory) returns (uint256)"
                      }
                    },
                    "id": 866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10661:20:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 862,
                  "id": 867,
                  "nodeType": "Return",
                  "src": "10654:27:2"
                }
              ]
            },
            "functionSelector": "d0def521",
            "id": 869,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nameLocation": "10535:4:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 856,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10548:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 869,
                  "src": "10540:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 855,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10540:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 858,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "10566:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 869,
                  "src": "10552:23:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 857,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10552:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10539:37:2"
            },
            "returnParameters": {
              "id": 862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 861,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 869,
                  "src": "10609:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 860,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10609:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10608:9:2"
            },
            "scope": 1029,
            "src": "10526:162:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 884,
              "nodeType": "Block",
              "src": "10837:52:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 879,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 871,
                        "src": "10864:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 880,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 873,
                        "src": "10868:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10879:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 878,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 991,
                      "src": "10854:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,bytes memory) returns (uint256)"
                      }
                    },
                    "id": 882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10854:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 877,
                  "id": 883,
                  "nodeType": "Return",
                  "src": "10847:35:2"
                }
              ]
            },
            "functionSelector": "d204c45e",
            "id": 885,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeMint",
            "nameLocation": "10744:8:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 871,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10761:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 885,
                  "src": "10753:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 870,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10753:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 873,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "10781:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 885,
                  "src": "10765:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 872,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10765:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10752:39:2"
            },
            "returnParameters": {
              "id": 877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 876,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 885,
                  "src": "10824:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 875,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10824:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10823:9:2"
            },
            "scope": 1029,
            "src": "10735:154:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 902,
              "nodeType": "Block",
              "src": "11069:54:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 897,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 887,
                        "src": "11096:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 898,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 889,
                        "src": "11100:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "id": 899,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 891,
                        "src": "11111:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 896,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 991,
                      "src": "11086:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory,bytes memory) returns (uint256)"
                      }
                    },
                    "id": 900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11086:30:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 895,
                  "id": 901,
                  "nodeType": "Return",
                  "src": "11079:37:2"
                }
              ]
            },
            "functionSelector": "f6dda936",
            "id": 903,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeMint",
            "nameLocation": "10945:8:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 887,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10971:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "10963:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 886,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10963:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 889,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "10999:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "10983:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 888,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10983:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 891,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "11033:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "11018:19:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 890,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11018:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10953:90:2"
            },
            "returnParameters": {
              "id": 895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 894,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "11060:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11060:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11059:9:2"
            },
            "scope": 1029,
            "src": "10936:187:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 947,
              "nodeType": "Block",
              "src": "11260:465:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 913,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 905,
                          "src": "11318:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11332:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11324:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 914,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11324:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11324:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11318:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11336:34:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        },
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        }
                      ],
                      "id": 912,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11310:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11310:61:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 921,
                  "nodeType": "ExpressionStatement",
                  "src": "11310:61:2"
                },
                {
                  "expression": {
                    "id": 924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 922,
                      "name": "totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 184,
                      "src": "11413:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11428:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "11413:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 925,
                  "nodeType": "ExpressionStatement",
                  "src": "11413:16:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 927,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 905,
                        "src": "11480:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 928,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 184,
                        "src": "11484:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 926,
                      "name": "_addTokenTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 727,
                      "src": "11468:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11468:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 930,
                  "nodeType": "ExpressionStatement",
                  "src": "11468:28:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11563:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11555:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 932,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11555:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11555:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 936,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 905,
                        "src": "11567:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 937,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 184,
                        "src": "11571:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 931,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19,
                      "src": "11546:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11546:37:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 939,
                  "nodeType": "EmitStatement",
                  "src": "11541:42:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 941,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 184,
                        "src": "11635:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 942,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "11648:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 940,
                      "name": "_setTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 962,
                      "src": "11622:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,string memory)"
                      }
                    },
                    "id": 943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11622:36:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 944,
                  "nodeType": "ExpressionStatement",
                  "src": "11622:36:2"
                },
                {
                  "expression": {
                    "id": 945,
                    "name": "totalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 184,
                    "src": "11707:11:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 911,
                  "id": 946,
                  "nodeType": "Return",
                  "src": "11700:18:2"
                }
              ]
            },
            "id": 948,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "11170:5:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 905,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "11184:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "11176:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11176:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 907,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "11202:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "11188:23:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11188:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11175:37:2"
            },
            "returnParameters": {
              "id": 911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 910,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "11247:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 909,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11247:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11246:9:2"
            },
            "scope": 1029,
            "src": "11161:564:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 961,
              "nodeType": "Block",
              "src": "11841:76:2",
              "statements": [
                {
                  "expression": {
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 955,
                        "name": "_tokenURIs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "11879:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                          "typeString": "mapping(uint256 => string storage ref)"
                        }
                      },
                      "id": 957,
                      "indexExpression": {
                        "id": 956,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 950,
                        "src": "11890:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11879:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 958,
                      "name": "_tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 952,
                      "src": "11901:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "11879:31:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 960,
                  "nodeType": "ExpressionStatement",
                  "src": "11879:31:2"
                }
              ]
            },
            "id": 962,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setTokenURI",
            "nameLocation": "11777:12:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 950,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11798:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "11790:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11790:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "11821:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "11807:23:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11807:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11789:42:2"
            },
            "returnParameters": {
              "id": 954,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11841:0:2"
            },
            "scope": 1029,
            "src": "11768:149:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 990,
              "nodeType": "Block",
              "src": "12094:270:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12202:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12194:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 975,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12194:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12194:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 979,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "12206:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 980,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 968,
                            "src": "12210:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 974,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 789,
                          "src": "12171:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes memory) returns (bool)"
                          }
                        },
                        "id": 981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12171:45:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12230:52:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 973,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12150:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12150:142:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 984,
                  "nodeType": "ExpressionStatement",
                  "src": "12150:142:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 986,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "12343:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 987,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 966,
                        "src": "12347:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 985,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 948,
                      "src": "12337:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (address,string memory) returns (uint256)"
                      }
                    },
                    "id": 988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12337:20:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 972,
                  "id": 989,
                  "nodeType": "Return",
                  "src": "12330:27:2"
                }
              ]
            },
            "id": 991,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "11970:9:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 964,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "11997:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 991,
                  "src": "11989:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 963,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11989:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 966,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "12023:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 991,
                  "src": "12009:23:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 965,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12009:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 968,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "12055:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 991,
                  "src": "12042:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12042:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11979:87:2"
            },
            "returnParameters": {
              "id": 972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 971,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 991,
                  "src": "12085:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12085:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12084:9:2"
            },
            "scope": 1029,
            "src": "11961:403:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1010,
              "nodeType": "Block",
              "src": "12426:228:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 997,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "12507:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12511:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "12507:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 1000,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 993,
                              "src": "12530:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 999,
                            "name": "_ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 392,
                            "src": "12521:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12521:17:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "12507:31:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "id": 1003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12552:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072",
                          "typeString": "literal_string \"ERC721: caller is not the owner\""
                        },
                        "value": "ERC721: caller is not the owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_16a80cbaa065a8ddb4c041be9e17c1937afb4d9c9042c560e36c117fe579f072",
                          "typeString": "literal_string \"ERC721: caller is not the owner\""
                        }
                      ],
                      "id": 996,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12486:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12486:109:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1005,
                  "nodeType": "ExpressionStatement",
                  "src": "12486:109:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1007,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 993,
                        "src": "12639:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1006,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1028,
                      "src": "12633:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1008,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12633:14:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1009,
                  "nodeType": "ExpressionStatement",
                  "src": "12633:14:2"
                }
              ]
            },
            "functionSelector": "42966c68",
            "id": 1011,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nameLocation": "12397:4:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 993,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12410:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1011,
                  "src": "12402:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 992,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12402:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12401:17:2"
            },
            "returnParameters": {
              "id": 995,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12426:0:2"
            },
            "scope": 1029,
            "src": "12388:266:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1027,
              "nodeType": "Block",
              "src": "12733:94:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1018,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1013,
                            "src": "12790:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1017,
                          "name": "_ownerOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 392,
                          "src": "12781:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view returns (address)"
                          }
                        },
                        "id": 1019,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12781:17:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 1022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12808:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12800:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1020,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12800:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12800:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1024,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1013,
                        "src": "12812:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1016,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 667,
                      "src": "12771:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 1025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12771:49:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1026,
                  "nodeType": "ExpressionStatement",
                  "src": "12771:49:2"
                }
              ]
            },
            "id": 1028,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "12701:5:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1014,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1013,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12715:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1028,
                  "src": "12707:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1012,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12707:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12706:17:2"
            },
            "returnParameters": {
              "id": 1015,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12733:0:2"
            },
            "scope": 1029,
            "src": "12692:135:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 1030,
        "src": "107:12722:2",
        "usedErrors": []
      }
    ],
    "src": "33:12797:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {
    "5777": {
      "events": {},
      "links": {},
      "address": "0xA2cDb4748E3564581e76f8E5E05402F11a124fb0",
      "transactionHash": "0x751ac51dc88c105438c29f15ae76102f926ac1bf628641b5a0ac44b05dd6a72e"
    }
  },
  "schemaVersion": "3.4.11",
  "updatedAt": "2023-01-16T14:17:24.700Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}